[Bug 739351] New: baseparse: parser fixed caps flag issue

GStreamer (bugzilla.gnome.org) bugzilla at gnome.org
Wed Oct 29 05:29:34 PDT 2014


https://bugzilla.gnome.org/show_bug.cgi?id=739351
  GStreamer | gstreamer (core) | 1.4.3

           Summary: baseparse: parser fixed caps flag issue
    Classification: Platform
           Product: GStreamer
           Version: 1.4.3
        OS/Version: Linux
            Status: UNCONFIRMED
          Severity: normal
          Priority: Normal
         Component: gstreamer (core)
        AssignedTo: gstreamer-bugs at lists.freedesktop.org
        ReportedBy: nicolas.huet at parrot.com
         QAContact: gstreamer-bugs at lists.freedesktop.org
     GNOME version: ---


Created an attachment (id=289582)
 --> (https://bugzilla.gnome.org/attachment.cgi?id=289582)
test stream

Using the aacparse with differents caps in a stream starting with 6 channels,
then 2 channels, the aacparse tries to get the allowed caps.
As the baseparse is configured with gst_pad_use_fixed_caps (parse->srcpad), the
allowed caps on the second negociation is always the current caps. The aacparse
therefore tries a "raw" caps instead of adts.

I was wondering if the configuration of the fixed caps should really be done in
baseparse or if it should be done in the subclass.
The documentation of baseparse is not clear to me:
"Things that subclass need to take care of:
    Fixate the source pad caps when appropriate "


The provided stream shows the issue.

gst-launch-1.0 -v --gst-debug=*:3,aacparse:6 filesrc location= aac.gdp  !
gdpdepay !  aacparse ! avdec_aac  ! fakesink silent=true

I provide two patches (one in baseparse and one in aacparse) as I am not sure
where the fix should be handled


Results:
0:00:01.953332579  2563  0x129acf0 LOG                 aacparse
gstaacparse.c:1262:gst_aac_parse_handle_frame:<aacparse0> rate: 48000, chans: 6
0:00:01.954749635  2563  0x129acf0 LOG                 aacparse
gstaacparse.c:1262:gst_aac_parse_handle_frame:<aacparse0> rate: 48000, chans: 2
0:00:01.955019481  2563  0x129acf0 DEBUG               aacparse
gstaacparse.c:172:gst_aac_parse_set_src_caps:<aacparse0> sink caps: (NULL)
0:00:01.955442520  2563  0x129acf0 DEBUG               aacparse
gstaacparse.c:210:gst_aac_parse_set_src_caps:<aacparse0:src> Caps can not
intersect
0:00:01.955794067  2563  0x129acf0 DEBUG               aacparse
gstaacparse.c:213:gst_aac_parse_set_src_caps:<aacparse0:src> Input is ADTS,
trying raw
0:00:01.956069992  2563  0x129acf0 DEBUG               aacparse
gstaacparse.c:256:gst_aac_parse_set_src_caps:<aacparse0> setting src caps:
audio/mpeg, framed=(boolean)true, mpegversion=(int)2, rate=(int)48000,
channels=(int)2, stream-format=(string)raw
/GstPipeline:pipeline0/GstAacParse:aacparse0.GstPad:src: caps = audio/mpeg,
framed=(boolean)true, mpegversion=(int)2, rate=(int)48000, channels=(int)2,
stream-format=(string)raw
/GstPipeline:pipeline0/avdec_aac:avdec_aac0.GstPad:sink: caps = audio/mpeg,
framed=(boolean)true, mpegversion=(int)2, rate=(int)48000, channels=(int)2,
stream-format=(string)raw
/GstPipeline:pipeline0/avdec_aac:avdec_aac0.GstPad:src: caps = audio/x-raw,
format=(string)F32LE, layout=(string)interleaved, rate=(int)48000,
channels=(int)2, channel-mask=(bitmask)0x0000000000000003
/GstPipeline:pipeline0/GstFakeSink:fakesink0.GstPad:sink: caps = audio/x-raw,
format=(string)F32LE, layout=(string)interleaved, rate=(int)48000,
channels=(int)2, channel-mask=(bitmask)0x0000000000000003
0:00:01.989942687  2563  0x129acf0 LOG                 aacparse
gstaacparse.c:1262:gst_aac_parse_handle_frame:<aacparse0> rate: 48000, chans: 2

Expected:
0:00:01.497882759  2548   0xa9aef0 LOG                 aacparse
gstaacparse.c:1262:gst_aac_parse_handle_frame:<aacparse0> rate: 48000, chans: 6
0:00:01.499493903  2548   0xa9aef0 LOG                 aacparse
gstaacparse.c:1262:gst_aac_parse_handle_frame:<aacparse0> rate: 48000, chans: 2
0:00:01.499751062  2548   0xa9aef0 DEBUG               aacparse
gstaacparse.c:172:gst_aac_parse_set_src_caps:<aacparse0> sink caps: (NULL)
0:00:01.500215872  2548   0xa9aef0 DEBUG               aacparse
gstaacparse.c:256:gst_aac_parse_set_src_caps:<aacparse0> setting src caps:
audio/mpeg, framed=(boolean)true, mpegversion=(int)2, rate=(int)48000,
channels=(int)2, stream-format=(string)adts
/GstPipeline:pipeline0/GstAacParse:aacparse0.GstPad:src: caps = audio/mpeg,
framed=(boolean)true, mpegversion=(int)2, rate=(int)48000, channels=(int)2,
stream-format=(string)adts
/GstPipeline:pipeline0/avdec_aac:avdec_aac0.GstPad:sink: caps = audio/mpeg,
framed=(boolean)true, mpegversion=(int)2, rate=(int)48000, channels=(int)2,
stream-format=(string)adts
/GstPipeline:pipeline0/avdec_aac:avdec_aac0.GstPad:src: caps = audio/x-raw,
format=(string)F32LE, layout=(string)interleaved, rate=(int)48000,
channels=(int)2, channel-mask=(bitmask)0x0000000000000003
/GstPipeline:pipeline0/GstFakeSink:fakesink0.GstPad:sink: caps = audio/x-raw,
format=(string)F32LE, layout=(string)interleaved, rate=(int)48000,
channels=(int)2, channel-mask=(bitmask)0x0000000000000003
0:00:01.535815837  2548   0xa9aef0 LOG                 aacparse
gstaacparse.c:1262:gst_aac_parse_handle_frame:<aacparse0> rate: 48000, chans: 2

-- 
Configure bugmail: https://bugzilla.gnome.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the QA contact for the bug.
You are the assignee for the bug.


More information about the gstreamer-bugs mailing list