AVI-muxer bug?

classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

AVI-muxer bug?

Nicholas Butts
I've setup a pipeline as follows:
appsrc->avimuxer->filesink

I then set the caps of the appsrc with the following code:
    GstCaps * caps = gst_caps_new_simple("video/mpeg", "width", G_TYPE_INT, 1280, "height", G_TYPE_INT, 720, "framerate", GST_TYPE_FRACTION, 1, 24, "mpegversion", G_TYPE_INT, 4, "systemstream", G_TYPE_BOOLEAN, FALSE);
    gst_app_src_set_caps(GST_APP_SRC(source), caps);

Here is the resulting debug message:
0:00:00.357576853  1728  0x8b2f008 DEBUG                 appsrc gstappsrc.c:1086:gst_app_src_set
_caps:<app-source> setting caps to video/mpeg, width=(int)1280, height=(int)720, framerate=(fraction)1/24, mpegve
rsion=(int)4, systemstream=(boolean)false


But when I link the appsrc to the avimux I see the following message:
ment_get_compatible_pad:<muxer> Could not find a compatible unlinked always pad to link to app-source:src, now ch
ecking request pads
0:00:00.359284054  1728  0x8b2f008 DEBUG               GST_CAPS gstpad.c:2210:gst_pad_get_
caps_reffed:<app-source:src> get pad caps
0:00:00.359353058  1728  0x8b2f008 DEBUG               GST_CAPS gstpad.c:2120:gst_pad_get_
caps_unlocked:<app-source:src> get pad caps
0:00:00.359373731  1728  0x8b2f008 DEBUG               GST_CAPS gstpad.c:2124:gst_pad_get_
caps_unlocked:<app-source:src> dispatching to pad getcaps function
0:00:00.359395800  1728  0x8b2f008 DEBUG               GST_CAPS gstpad.c:2137:gst_pad_get_
caps_unlocked:<app-source:src> pad getcaps returned ANY
0:00:00.359417591  1728  0x8b2f008 DEBUG        GST_PERFORMANCE gstcaps.c:363:gst_caps_
make_writable: copy caps
0:00:00.359482683  1728  0x8b2f008 DEBUG       GST_ELEMENT_PADS gstutils.c:889:gst_elem
ent_get_compatible_pad_template: Looking for a suitable pad template in muxer out of 3 templates...
0:00:00.359504753  1728  0x8b2f008 DEBUG               GST_CAPS gstutils.c:905:gst_element
_get_compatible_pad_template: compatible direction: found sink pad template "audio_%d"
0:00:00.359524588  1728  0x8b2f008 DEBUG               GST_CAPS gstutils.c:908:gst_element
_get_compatible_pad_template: intersecting ANY
0:00:00.359545261  1728  0x8b2f008 DEBUG               GST_CAPS gstutils.c:910:gst_element
_get_compatible_pad_template: ..and audio/x-raw-int, endianness=(int)1234, signed=(boolean){ true, false }, width
=(int){ 8, 16 }, depth=(int){ 8, 16 }, rate=(int)[ 1000, 96000 ], channels=(int)[ 1, 2 ]; audio/mpeg, mpegversion=(in
t)1, layer=(int)[ 1, 3 ], rate=(int)[ 1000, 96000 ], channels=(int)[ 1, 2 ]; audio/mpeg, mpegversion=(int)4, stream-f
ormat=(string)raw, rate=(int)[ 1000, 96000 ], channels=(int)[ 1, 2 ]; audio/x-ac3, rate=(int)[ 1000, 96000 ], channel
s=(int)[ 1, 2 ]; audio/x-alaw, rate=(int)[ 1000, 48000 ], channels=(int)[ 1, 2 ]; audio/x-mulaw, rate=(int)[ 1000, 48
000 ], channels=(int)[ 1, 2 ]; audio/x-wma, rate=(int)[ 1000, 96000 ], channels=(int)[ 1, 2 ], wmaversion=(int)[ 1, 2
 ]
0:00:00.359593312  1728  0x8b2f008 DEBUG               GST_CAPS gstutils.c:916:gst_element
_get_compatible_pad_template: caps are compatible
0:00:00.359613426  1728  0x8b2f008 DEBUG       GST_ELEMENT_PADS gstutils.c:928:gst_elem
ent_get_compatible_pad_template: Returning new pad template 0x8bfc718
0:00:00.359635216  1728  0x8b2f008 DEBUG                 avimux gstavimux.c:965:gst_avi_mux_requ
est_new_pad:<muxer> adding new pad: audio_00
0:00:00.359666785  1728  0x8b2f008 DEBUG               GST_PADS gstpad.c:1625:gst_pad_s
et_setcaps_function:<'':audio_00> setcapsfunc set to gst_avi_mux_audsink_set_caps
0:00:00.359731318  1728  0x8b2f008 DEBUG            collectpads gstcollectpads.c:321:gst_collect
_pads_add_pad_full: adding pad '':audio_00
0:00:00.359755902  1728  0x8b2f008 DEBUG               GST_PADS gstpad.c:1263:gst_pad_s
et_chain_function:<'':audio_00> chainfunc set to gst_collect_pads_chain
0:00:00.359777413  1728  0x8b2f008 DEBUG               GST_PADS gstpad.c:1346:gst_pad_s
et_event_function:<'':audio_00> eventfunc for set to gst_collect_pads_event
0:00:00.359798645  1728  0x8b2f008 DEBUG               GST_PADS gstpad.c:1346:gst_pad_s
et_event_function:<'':audio_00> eventfunc for set to gst_avi_mux_handle_event
0:00:00.359819597  1728  0x8b2f008 INFO        GST_ELEMENT_PADS gstelement.c:727:gst
_element_add_pad:<muxer> adding pad 'audio_00'
0:00:00.359840270  1728  0x8b2f008 DEBUG        GST_REFCOUNTING gstobject.c:793:gst_obj
ect_set_parent:<'':audio_00> set parent (ref and sink)
0:00:00.359866531  1728  0x8b2f008 DEBUG       GST_ELEMENT_PADS gstutils.c:1203:gst_ele
ment_get_compatible_pad: found existing request pad muxer:audio_00
0:00:00.359887483  1728  0x8b2f008 INFO                GST_PADS gstutils.c:1493:prep
are_link_maybe_ghosting: app-source and muxer in same bin, no need for ghost pads
0:00:00.359998950  1728  0x8b2f008 DEBUG                GST_BUS gstbus.c:309:gst_bus_post:<bu
s0> [msg 0x8b3a750] posting on bus, type structure-change, GstMessageStructureChange, type=(GstStructureChangeTyp
e)GST_STRUCTURE_CHANGE_TYPE_PAD_LINK, owner=(GstElement)"\(GstAppSrc\)\ app-source", busy=(boolean)true; from source
<muxer:audio_00>
0

So it looks like the avimux audio sink is being used to connect to my video source. Is there a way to work around this bug?

--
Nicholas Butts
SENIOR FIRMWARE ENGINEER

Appareo Systems, LLC
1810 NDSU Research Circle N
Fargo, ND 58102

P: (701) 356-2200
F: (701) 356-3157

http://www.appareo.com

[hidden email]



NOTICE: This message {including attachments} is covered by the Electronic Communication Privacy Act, 18 U.S.C. sections 2510-2521, is CONFIDENTIAL and may also be protected by ATTORNEY-CLIENT OR OTHER PRIVILEGE. If you believe that it has been sent to you in error, do not read it. If you are not the intended recipient, you are hereby notified that any retention, dissemination, distribution, or copying of this communication is strictly prohibited. Please reply to the sender that you have received the message in error and then delete it.

_______________________________________________
gstreamer-devel mailing list
[hidden email]
http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: AVI-muxer bug?

Tim-Philipp Müller-2
On Thu, 2011-08-18 at 09:38 -0500, Nicholas Butts wrote:

> I've setup a pipeline as follows:
> appsrc->avimuxer->filesink
>
> I then set the caps of the appsrc with the following code:
>     GstCaps * caps = gst_caps_new_simple("video/mpeg", "width",
> G_TYPE_INT, 1280, "height", G_TYPE_INT, 720, "framerate",
> GST_TYPE_FRACTION, 1, 24, "mpegversion", G_TYPE_INT, 4,
> "systemstream", G_TYPE_BOOLEAN, FALSE);
>     gst_app_src_set_caps(GST_APP_SRC(source), caps);
>
> Here is the resulting debug message:
> 0:00:00.357576853  1728  0x8b2f008 DEBUG                 appsrc
> gstappsrc.c:1086:gst_app_src_set
> _caps:<app-source> setting caps to video/mpeg, width=(int)1280,
> height=(int)720, framerate=(fraction)1/24, mpegve
> rsion=(int)4, systemstream=(boolean)false
>
> But when I link the appsrc to the avimux I see the following message:
> ment_get_compatible_pad:<muxer> Could not find a compatible unlinked
> always pad to link to app-source:src, now ch

> gst_pad_get_caps_unlocked:<app-source:src> pad getcaps returned ANY

That looks like it might be the problem..

> So it looks like the avimux audio sink is being used to connect to my
> video source. Is there a way to work around this bug?

You could create the request pad(s) you need yourself using
gst_element_request_pad().

Cheers
 -Tim

_______________________________________________
gstreamer-devel mailing list
[hidden email]
http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: AVI-muxer bug?

Nicholas Butts
Thanks for pointing that out. I now have it working with either AVI or MOV files, but my problem is the AVI or MOV files don't seem to be valid or don't want to play back unless I call

gst_app_src_end_of_stream (GST_APP_SRC (source));

at the "end" of my data. The problem is the data will be continously written until power is lost (this is an embedded device). I've tried setting the faststart properity of the QTMux filter:
    g_object_set(G_OBJECT (muxer), "faststart", TRUE, NULL);

But that doesn't work either. Is there anyway to get the system to write valid AVI or MOV files in a streaming fashion?


On Thu, Aug 18, 2011 at 9:51 AM, Tim-Philipp Müller <[hidden email]> wrote:
On Thu, 2011-08-18 at 09:38 -0500, Nicholas Butts wrote:

> I've setup a pipeline as follows:
> appsrc->avimuxer->filesink
>
> I then set the caps of the appsrc with the following code:
>     GstCaps * caps = gst_caps_new_simple("video/mpeg", "width",
> G_TYPE_INT, 1280, "height", G_TYPE_INT, 720, "framerate",
> GST_TYPE_FRACTION, 1, 24, "mpegversion", G_TYPE_INT, 4,
> "systemstream", G_TYPE_BOOLEAN, FALSE);
>     gst_app_src_set_caps(GST_APP_SRC(source), caps);
>
> Here is the resulting debug message:
> 0:00:00.357576853  1728  0x8b2f008 DEBUG                 appsrc
> gstappsrc.c:1086:gst_app_src_set
> _caps:<app-source> setting caps to video/mpeg, width=(int)1280,
> height=(int)720, framerate=(fraction)1/24, mpegve
> rsion=(int)4, systemstream=(boolean)false
>
> But when I link the appsrc to the avimux I see the following message:
> ment_get_compatible_pad:<muxer> Could not find a compatible unlinked
> always pad to link to app-source:src, now ch

> gst_pad_get_caps_unlocked:<app-source:src> pad getcaps returned ANY

That looks like it might be the problem..

> So it looks like the avimux audio sink is being used to connect to my
> video source. Is there a way to work around this bug?

You could create the request pad(s) you need yourself using
gst_element_request_pad().

Cheers
 -Tim

_______________________________________________
gstreamer-devel mailing list
[hidden email]
http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel



--
Nicholas Butts
SENIOR FIRMWARE ENGINEER

Appareo Systems, LLC
1810 NDSU Research Circle N
Fargo, ND 58102

P: (701) 356-2200
F: (701) 356-3157

http://www.appareo.com

[hidden email]



NOTICE: This message {including attachments} is covered by the Electronic Communication Privacy Act, 18 U.S.C. sections 2510-2521, is CONFIDENTIAL and may also be protected by ATTORNEY-CLIENT OR OTHER PRIVILEGE. If you believe that it has been sent to you in error, do not read it. If you are not the intended recipient, you are hereby notified that any retention, dissemination, distribution, or copying of this communication is strictly prohibited. Please reply to the sender that you have received the message in error and then delete it.

_______________________________________________
gstreamer-devel mailing list
[hidden email]
http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel