mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-06-06 07:28:53 +00:00
rtph263depay: extra keyframe info from PTYPE header
... as opposed to taking it from h263 payload header, which need not be so reliable. Fixes #610172.
This commit is contained in:
parent
fe9e6d82ee
commit
0206b67b1d
2 changed files with 10 additions and 1 deletions
|
@ -206,7 +206,6 @@ gst_rtp_h263_depay_process (GstBaseRTPDepayload * depayload, GstBuffer * buf)
|
||||||
* +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
* +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||||
*/
|
*/
|
||||||
I = (payload[1] & 0x10) == 0x10;
|
I = (payload[1] & 0x10) == 0x10;
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
if (P == 0) {
|
if (P == 0) {
|
||||||
/* F == 1 and P == 0
|
/* F == 1 and P == 0
|
||||||
|
@ -257,12 +256,21 @@ gst_rtp_h263_depay_process (GstBaseRTPDepayload * depayload, GstBuffer * buf)
|
||||||
if (!F && payload_len > 4 && (GST_READ_UINT32_BE (payload) >> 10 == 0x20)) {
|
if (!F && payload_len > 4 && (GST_READ_UINT32_BE (payload) >> 10 == 0x20)) {
|
||||||
GST_DEBUG ("Mode A with PSC => frame start");
|
GST_DEBUG ("Mode A with PSC => frame start");
|
||||||
rtph263depay->start = TRUE;
|
rtph263depay->start = TRUE;
|
||||||
|
if (!!(payload[4] & 0x02) != I) {
|
||||||
|
GST_DEBUG ("Wrong Picture Coding Type Flag in rtp header");
|
||||||
|
I = !I;
|
||||||
|
}
|
||||||
|
rtph263depay->psc_I = I;
|
||||||
} else {
|
} else {
|
||||||
GST_DEBUG ("no frame start yet, skipping payload");
|
GST_DEBUG ("no frame start yet, skipping payload");
|
||||||
goto skip;
|
goto skip;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* only trust I info from Mode A starting packet
|
||||||
|
* from buggy payloaders or hw */
|
||||||
|
I = rtph263depay->psc_I;
|
||||||
|
|
||||||
if (SBIT) {
|
if (SBIT) {
|
||||||
/* take the leftover and merge it at the beginning, FIXME make the buffer
|
/* take the leftover and merge it at the beginning, FIXME make the buffer
|
||||||
* data writable. */
|
* data writable. */
|
||||||
|
|
|
@ -46,6 +46,7 @@ struct _GstRtpH263Depay
|
||||||
|
|
||||||
guint8 offset; /* offset to apply to next payload */
|
guint8 offset; /* offset to apply to next payload */
|
||||||
guint8 leftover; /* leftover from previous payload (if offset != 0) */
|
guint8 leftover; /* leftover from previous payload (if offset != 0) */
|
||||||
|
gboolean psc_I; /* Picture-Coding-Type == I from Picture Start Code packet */
|
||||||
GstAdapter *adapter;
|
GstAdapter *adapter;
|
||||||
gboolean start;
|
gboolean start;
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in a new issue