[Bug 732631] New: Missing frames when encoding 16x16 video to MPEG

GStreamer (bugzilla.gnome.org) bugzilla at gnome.org
Wed Jul 2 07:53:03 PDT 2014


https://bugzilla.gnome.org/show_bug.cgi?id=732631
  GStreamer | gst-libav | git

           Summary: Missing frames when encoding 16x16 video to MPEG
    Classification: Platform
           Product: GStreamer
           Version: git
        OS/Version: All
            Status: NEW
          Severity: normal
          Priority: Normal
         Component: gst-libav
        AssignedTo: gstreamer-bugs at lists.freedesktop.org
        ReportedBy: vincent.penquerch at collabora.co.uk
         QAContact: gstreamer-bugs at lists.freedesktop.org
                CC: thiagossantos at gmail.com,
                    vincent.penquerch at collabora.co.uk
        Depends on: 732351
     GNOME version: ---


+++ This bug was initially created as a clone of Bug #732351 +++

When encoding 16x16 video to MPEG, a sanity check triggers in ffmpeg, which
causes frames to be not encoded.

To reproduce:
1) Create a 16x16 h264 file:
gst-launch-1.0 videotestsrc pattern=6 num-buffers=1000 ! \
"video/x-raw, format=(string)I420, width=(int)16, height=(int)16, \
framerate=(fraction)1/1" ! x264enc ! qtmux ! filesink location=/tmp/test.mov

2) Play this file:
gst-launch-1.0 playbin uri="file:///tmp/test.mov" video-sink=xvimagesink

3) See grey output, instead of the solid blue (pattern 6) we expected.


Tracing shows the encoding earlies out in libav from a sanity check on size
(which is apparently too strict):

gst-libs/ext/libav/libavcodec/mpegvideo_enc.c, function encode_thread:

            if(s->pb.buf_end - s->pb.buf - (put_bits_count(&s->pb)>>3) <
MAX_MB_BYTES){
                av_log(s->avctx, AV_LOG_ERROR, "encoded frame too large\n");
                return -1;
            }

Commenting out the return -1 above fixes the issue (albeit at the likely cost
of possible buffer overflow).

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