After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 686046 - avidemux: can't play 8-bit indexed RGB video
avidemux: can't play 8-bit indexed RGB video
Status: RESOLVED FIXED
Product: GStreamer
Classification: Platform
Component: gst-plugins-good
git master
Other Linux
: Normal normal
: 1.0.2
Assigned To: GStreamer Maintainers
GStreamer Maintainers
Depends on:
Blocks:
 
 
Reported: 2012-10-12 16:26 UTC by Nick Haddad
Modified: 2012-10-16 10:56 UTC
See Also:
GNOME target: ---
GNOME version: ---



Description Nick Haddad 2012-10-12 16:26:14 UTC
The attached file (xylophone_indexed.avi) is a valid 8-bit indexed avi file, but  avidemux will not parse it properly.


Reproduction steps (in Command prompt):

% setenv GET_DEBUG 2
% gst-launch-0.10 playbin2 uri=file:///xylophone_indexed.avi

Expected Results:
------------------
File would play through properly


Actual Results:
----------------
File does not play with the following errors:
0:00:00.061702915  9724      0x14a7c20 WARN           basetransform gstbasetransform.c:1065:gst_base_transform_acceptcaps_default:<vconv> transform could not transform video/x-raw-rgb, bpp=(int)8, depth=(int)8, endianness=(int)1234, framerate=(fraction)15/1, width=(int)320, height=(int)240, palette_data=(buffer)0b0c0d00546c24003c6ab300150d5800b4892a00b991a70033299b003ac4cc00376f8b00352b0e00b47c7b00f4d4b200583056005a615b008c71a900876d7500593a0d00e7b02800d0c38600b994e100124363007a53540080c2bf00846ce5003d36d40026451a006a6a61004665e4001b1f2200cad3fb0088898300946f230024577100ad989100b3bc450073777400e093ac0055514b00f1bf48008292fb004f353d005947a300876466003fd7f000f1dee5002b3134006e57d70070f8fb009a6e7800676ee30012137300431c1300698c200042484b00d09a8c00575273008a963800391e3000a18ba900b77c5a00647072007c4c780077678800dbb6d9003ea9b8009f90880041491b00b9ada800fef9ae001a191400636a6300713c1600535a5d0042515300efb4ac009a77e500331c5800c6857c00284d9e00866f8e00fbf3e80097a25c0034434a009696fa00d8b5350069493f00fadc7a008efbfb00272c3200747b7b0021242900f3c462005be3f3003e55d4005f8afa006b6f6b003cd1e000fbc834002b343b009879930043535b0072dbef007a51990063978c00c7992a006b722c00323a3c00626461007b82800048456b00928d870074a024008a873500c7a7c1009c90c6006238670078416a004b79fa0052522200c8fafc00bbb4f700d3a5f700dcd2cf00ada54e0065564f00141212003b3c3d00e5979600afa5950094527e0066545e003a495200eef7fc00a0ac3e00846aca00b47a9200846bfa002c247900837c78009faafc00eeb8c300fdf28900c68092003f2a3c006e58f4007463f900332ab900686b8a003b50bc008583840096827e00666cac00c9c45400d18ca80060a9b300323b4200221c170054626400626c6b00211e3800a2cbf4005cf8fd00a09794009c7bf9004a4b4e00172e5300758a3200fefad1007b79740074726d00986c69003356ec00472d530088531d00f19cac00433eea00766d5e0033353b0024292b009ba5a9003234340053202a004f484200f5d8d40056c6ca0055d5e0003d434200e1bdfa00f6ba2a006e6f4400262c3c0095703a00b5bd5a00fdd34b002222240054585300fedc62007e596700418e90006c7474004c575c001b151300854c39007255ba005a5c5c004b5251007ffbfc00412a7b00b996fb00d7a327007b7c7c0085827c0045ebf800fef9fc004468f9005c4abb00c9b1aa0056372300898c8b009974cb00d0cd6800b896b900f2d9fc00939393007f81f9004445a000a790f500e7a996005c405300c19587003b454a004d4ef100dbdc7f00799f9000191b1c00424b5300536c3c005b3a82007189fb00f6d9900072501800c89e4e005b636500675775006478f9002a2b2d00857768005b84590035414200da86940033315400a2fbfb008ca73800cdbcc200beac9a00636ec300 in anything we support
0:00:00.062221923  9724      0x14a8720 WARN                avidemux gstavidemux.c:5112:gst_avi_demux_loop:<avidemux0> error: Internal data stream error.
0:00:00.062249837  9724      0x14a8720 WARN                avidemux gstavidemux.c:5112:gst_avi_demux_loop:<avidemux0> error: streaming stopped, reason not-negotiated
ERROR: from element /GstPlayBin2:playbin20/GstURIDecodeBin:uridecodebin0/GstDecodeBin2:decodebin20/GstAviDemux:avidemux0: Internal data stream error.
Additional debug info:
gstavidemux.c(5112): gst_avi_demux_loop (): /GstPlayBin2:playbin20/GstURIDecodeBin:uridecodebin0/GstDecodeBin2:decodebin20/GstAviDemux:avidemux0:
streaming stopped, reason not-negotiated
ERROR: pipeline doesn't want to preroll.
Setting pipeline to NULL ...
Freeing pipeline ...
Comment 1 Nick Haddad 2012-10-12 16:31:38 UTC
xylophone_indexed.avi can be found here:

https://www.dropbox.com/s/21zmmqdb6z856sh/xylophone_indexed.avi
Comment 2 Tim-Philipp Müller 2012-10-12 20:24:36 UTC
This works fine for me with the latest 0.10 releases (i.e. core/bad 0.10.36, -good 0.10.31).

It does, however, not work with current 1.0 git, so leaving bug open.
Comment 3 Tim-Philipp Müller 2012-10-12 20:34:34 UTC
This fixes one part:

 commit b772d5d2710547f6a881a0085a0db4f3dd805ad1
 Author: Tim-Philipp Müller <tim@centricular.net>
 Date:   Fri Oct 12 21:31:25 2012 +0100

    riff: 8-bit paletted video is format RGB8P, not RGB8_PALETTED
    
    https://bugzilla.gnome.org/show_bug.cgi?id=686046


But videoconvert still doesn't like it. It seems to expect the palette at the end of the video frame data instead of out-of-band:

0:00:00.445551702 27967      0x16e0320 ERROR                default video-frame.c:141:gst_video_frame_map_id: invalid buffer size 76800 < 77824
WARNING: from element /GstPlayBin:playbin0/GstPlaySink:playsink/GstBin:vdbin/GstVideoConvert:vdconv: Internal GStreamer error: code not implemented.  Please file a bug at http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer.
Additional debug info:
gstvideofilter.c(289): gst_video_filter_transform (): /GstPlayBin:playbin0/GstPlaySink:playsink/GstBin:vdbin/GstVideoConvert:vdconv:
invalid video buffer received
Comment 4 Tim-Philipp Müller 2012-10-16 10:56:48 UTC
commit 4834e11da071a9cb32a45705bc80aaf5630ae7d3
Author: Tim-Philipp Müller <tim@centricular.net>
Date:   Tue Oct 16 11:48:32 2012 +0100

    riff-media: fix palette extraction some more
    
    We still need to make sure the palette is always at least 1024
    bytes.

commit b0d581eadc8cb21f4997ae03a88b06de6ce53e18
Author: Tim-Philipp Müller <tim@centricular.net>
Date:   Tue Oct 16 00:55:56 2012 +0100

    riff: create palette_data buffer correctly
    
    gst_buffer_copy_into() will append to any existing
    memory region, so don't create a buffer and alloc
    some memory, but just create an empty buffer and
    let _copy_into() append the memory we want. Fixes
    the palette being 2048 bytes with the first half
    being filled with garbage.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=686046

commit f94572fb36fec0bc5e378433ff2e018bea15aa7f
Author: Tim-Philipp Müller <tim@centricular.net>
Date:   Tue Oct 16 01:02:11 2012 +0100

    avidemux: append palette data to paletted 8-bit RGB frames
    
    Fixes playback of 8-bit indexed RGB videos, with fixes in -base.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=686046