[Bug 698679] New: h264parse doesn't set proper caps on src pad on changes in the sink pad

GStreamer (bugzilla.gnome.org) bugzilla at gnome.org
Tue Apr 23 09:50:00 PDT 2013


https://bugzilla.gnome.org/show_bug.cgi?id=698679
  GStreamer | gst-plugins-bad | 1.x

           Summary: h264parse doesn't set proper caps on src pad on
                    changes in the sink pad
    Classification: Platform
           Product: GStreamer
           Version: 1.x
        OS/Version: Linux
            Status: UNCONFIRMED
          Severity: normal
          Priority: Normal
         Component: gst-plugins-bad
        AssignedTo: gstreamer-bugs at lists.freedesktop.org
        ReportedBy: n770galaxy at gmail.com
         QAContact: gstreamer-bugs at lists.freedesktop.org
     GNOME version: ---


Created an attachment (id=242262)
 View: https://bugzilla.gnome.org/attachment.cgi?id=242262
 Review: https://bugzilla.gnome.org/review?bug=698679&attachment=242262

patch that fixes the issue in GStreamer SDK

When h264parse is used to convert AVC to bytestream format and the
gst_h264_parse_set_caps function is triggered due a caps change (new codec_data
and new size) it does the following:

1) new size is extracted and set to h264parse->width and h264parse->height
2) same for PAR and framerate
3) new codec_data is parsed and it's SPS/PPS extracted, the calls to
gst_h264_parse_process_nal set h264parse->update_caps to TRUE
4) finally when input format is AVC and converting to bytestream it sets the
following:
    h264parse->push_codec = TRUE;
    h264parse->have_sps = FALSE;
    h264parse->have_pps = FALSE;
    if (h264parse->align == GST_H264_PARSE_ALIGN_NAL)
      h264parse->split_packetized = TRUE;
    h264parse->packetized = TRUE;

For 0.10 the execution is followed by a call to
gst_h264_parse_check_valid_frame which calls to gst_h264_parse_reset_frame and
it sets unconditionally h264parse->update_caps to FALSE.

For 1.0 the execution is followed by a call to gst_h264_parse_handle_frame
which chains to gst_h264_parse_handle_frame_packetized avoiding the call to
_reset_frame.

At gst_h264_parse_update_src_caps:

Case 0: for the first call it sets modified unconditionally
Case 1: if update_caps is FALSE early exit (triggered in 0.10 due _reset_frame
call)
Case 3: there's several checks about the size/fps/par to decide if caps have to
be updated. As those checks compare almost the same things size from input caps
vs size in the SPS, FPS and PAR modified isn't triggered and caps in the src
pad doesn't reflect the change.

Although the new SPS/PPS is injected in the pipeline.

-- 
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