rtpmp4vpay: don't look for headers in some cases

In some streams (starting with 00000100) don't look for the headers but push
data as it is.
Fixes #582153
This commit is contained in:
Wim Taymans 2009-05-12 18:39:28 +02:00
parent 301fc8a712
commit e13e3c6249
2 changed files with 7 additions and 1 deletions

View file

@ -164,6 +164,7 @@ gst_rtp_mp4v_pay_init (GstRtpMP4VPay * rtpmp4vpay)
rtpmp4vpay->rate = 90000; rtpmp4vpay->rate = 90000;
rtpmp4vpay->profile = 1; rtpmp4vpay->profile = 1;
rtpmp4vpay->send_config = DEFAULT_SEND_CONFIG; rtpmp4vpay->send_config = DEFAULT_SEND_CONFIG;
rtpmp4vpay->need_config = TRUE;
rtpmp4vpay->config = NULL; rtpmp4vpay->config = NULL;
@ -281,7 +282,7 @@ gst_rtp_mp4v_pay_flush (GstRtpMP4VPay * rtpmp4vpay)
* over multiple packets. */ * over multiple packets. */
avail = gst_adapter_available (rtpmp4vpay->adapter); avail = gst_adapter_available (rtpmp4vpay->adapter);
if (rtpmp4vpay->config == NULL) { if (rtpmp4vpay->config == NULL && rtpmp4vpay->need_config) {
/* when we don't have a config yet, flush things out */ /* when we don't have a config yet, flush things out */
gst_adapter_flush (rtpmp4vpay->adapter, avail); gst_adapter_flush (rtpmp4vpay->adapter, avail);
avail = 0; avail = 0;
@ -402,6 +403,10 @@ gst_rtp_mp4v_pay_depay_data (GstRtpMP4VPay * enc, guint8 * data, guint size,
/* VOP startcode, we don't have to flush the packet */ /* VOP startcode, we don't have to flush the packet */
result = FALSE; result = FALSE;
break; break;
case 0x00000100:
enc->need_config = FALSE;
result = TRUE;
break;
default: default:
if (code >= 0x20 && code <= 0x2f) { if (code >= 0x20 && code <= 0x2f) {
GST_DEBUG_OBJECT (enc, "short header"); GST_DEBUG_OBJECT (enc, "short header");

View file

@ -52,6 +52,7 @@ struct _GstRtpMP4VPay
gint profile; gint profile;
GstBuffer *config; GstBuffer *config;
gboolean send_config; gboolean send_config;
gboolean need_config;
GstPadEventFunction old_event_func; GstPadEventFunction old_event_func;
}; };