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 310945 - gst-ffmpeg plugin-"ffdemux_mov_mp4_m4a_3gp" read mov files error on ARM platform
gst-ffmpeg plugin-"ffdemux_mov_mp4_m4a_3gp" read mov files error on ARM plat...
Status: RESOLVED INCOMPLETE
Product: GStreamer
Classification: Platform
Component: gst-libav
git master
Other All
: Normal normal
: NONE
Assigned To: GStreamer Maintainers
GStreamer Maintainers
Depends on:
Blocks:
 
 
Reported: 2005-07-20 01:22 UTC by nanwang
Modified: 2006-05-02 13:32 UTC
See Also:
GNOME target: ---
GNOME version: ---



Description nanwang 2005-07-20 01:22:02 UTC
Dear all,
 
 I develop gstreamer software ,use gst-ffmpeg-0.8.4 ,running on ARM platform 
and find a problem.
 
when play mov files , for example,
 
gst-launch filesrc location=/mnt/nfs/dragonballv_default.mp4 ! ffdemux_mov_mp4
_m4a_3gp

 will report errors that said read mov header error.
 
 I traced in source code and find reasons:
 
in gst-libs/ext/ffmpeg/libavformat/utils.c  function av_open_input_stream()
 
 err = ic->iformat->read_header(ic, ap);
 
this line will return error.
 
 
 In fact ,it calls mov_read_header. 
 
in mov.c 
function mov_read_header() first call   atom.size = url_filesize(url_fileno
(pb));
 
url_filesize will call seek functions in ext/ffmpeg/gstffmpegprotocol.c
 
Although the return value is ok and return current file pointer is OK ,
 Next seek, the return data are error :The return data are 32kbytes
offset from file header ! 

You know ,in aviobuf.c ,the buffer size is 32k bytes so I doubt it is realtive 
with the 
buffer operation. gst_bytestream_seek return new pos are OK ,but the data read 
from file are error !
32k bytes offset !
 
But all of these are all OK in X86 system ,only on ARM ,decode mov format files 
I found this error !
Comment 1 Ronald Bultje 2005-07-20 07:18:56 UTC
Don't spam the bots please. :). Does this work fine on x86?
Comment 2 Ronald Bultje 2005-07-20 15:59:49 UTC
Also, does ffplay (gst-ffmpeg/gst-libs/ext/ffmpeg/ffplay) play it correctly on
ARM? If not, it's an ffmpeg bug and you probably want to look there.

Setting to NEEDINFO until I have answers to the above questions.
Comment 3 nanwang 2005-07-21 02:00:42 UTC
The problem only occurs on ARM platform when you try to play mov/mp4 files 
and on X86 all of them are Ok .On ARM ,when you play mpeg-1 files ,is ok too.

I checked versions earlier ,and found in gst-plugin-0.6 ,you found a error in 
plugin qtdemux ,and fix it for gst_bytestream_seek return error . Is it realtive
with my errors?

I use gst-ffmpeg-0.8.4, gstreamer-0.8.10 ,gst-plugins-0.8

I disable ffplay options when compile.
Comment 4 Ronald Bultje 2005-07-21 05:29:57 UTC
Enable ffplay and try that to test... I'd like to know whether this is an
ARM/ffmpeg or an ARM/GStreamer bug. :).
Comment 5 nanwang 2005-07-21 06:41:59 UTC
OK , I disable ffplay for I don't use X11 system on ARM .
Now ,I enable ffplay and ffplay mp4 files are right on ARM platform.
Following are the DEBUG outputs of ffplay /mnt/nfs/xx.mp4

 av probe input file!/mnt/nfs/dragonballv_default.mp4
 
 call mov header !filesz=12215804
parse:
 default: tag=NULL offset=0x0 size=0xba65fc
|parse:
 unknown: tag=ftyp offset=0x8 size=0x8
|parse:
 leaf: tag=udta offset=0x18 size=0x176
|parse:
 mdat: tag=mdat offset=0x196 size=0x1a
|parse:
 mdat: tag=mdat offset=0x1b8 size=0xa
|parse:
 mdat: tag=mdat offset=0x1ca size=0xb9d218
|parse:
 moov: tag=moov offset=0xb9d3ea size=0x9212
|parse:
 default: tag=moov offset=0xb9d3ea size=0x9212
||parse:
 mvhd: tag=mvhd offset=0xb9d3f2 size=0x64
time scale = 1000
||parse:
 leaf: tag=udta offset=0xb9d45e size=0x18
||parse:
 leaf: tag=iods offset=0xb9d47e size=0x19
||parse:
 trak: tag=trak offset=0xb9d49f size=0x8e14
||parse:
 default: tag=trak offset=0xb9d49f size=0x8e14
|||parse:
 leaf: tag=udta offset=0xb9d4a7 size=0x30
|||parse:
 tkhd: tag=tkhd offset=0xb9d4df size=0x54
|||parse:
 default: tag=edts offset=0xb9d53b size=0x28
||||parse:
 elst: tag=elst offset=0xb9d543 size=0x20
track[0].edit_count = 2
|||parse:
 default: tag=mdia offset=0xb9d56b size=0x8d48
||||parse:
 mdhd: tag=mdhd offset=0xb9d573 size=0x18
track[0].time_scale = 1000
||||parse:
 hdlr: tag=hdlr offset=0xb9d593 size=0x25
ctype=  (0x00000000)
stype= vide
hdlr: vide
||||parse:
 default: tag=minf offset=0xb9d5c0 size=0x8cf3
|||||parse:
 leaf: tag=vmhd offset=0xb9d5c8 size=0xc
|||||parse:
 default: tag=dinf offset=0xb9d5dc size=0x1c
||||||parse:
 leaf: tag=dref offset=0xb9d5e4 size=0x14
|||||parse:
 default: tag=stbl offset=0xb9d600 size=0x8cb3
||||||parse:
 stts: tag=stts offset=0xb9d608 size=0x31e8


and compared with the "gst-launch filesrc location=/mnt/nfs/xx.mp4 ! 
ffdemux_mov_mp4_m4a_3gp_3g2", the outputs are

av probe input file!gstreamer://0x157a38

 call mov header !
 
 default: tag=NULL offset=0x0 size=0xba65fc

 unknown: tag=€8$?offset=0x8 size=0x418410ff mov: header not found !!! (err:0, 
moov:0, mdat:0) pos:1099174151
ERROR: from element /pipeline0/ffdemux_mov_mp4_m4a_3gp_3g20: GStreamer encounter
ed a general supporting library error.
Additional debug info:
gstffmpegdemux.c(551): gst_ffmpegdemux_open: /pipeline0/ffdemux_mov_mp4_m4a_3gp_
3g20:
Unknown error
Caught SIGSEGV accessing address (nil)
Spinning.  Please run 'gdb gst-launch 58' to continue debugging, Ctrl-C to quit,
 or Ctrl-\ to dump core.

Please help me to point out the errors , thanks 
Comment 6 nanwang 2005-07-21 06:47:31 UTC
P.S.  The version I use is gst-ffmpeg-0.8.5 .
It seems that the parse function of the ffplay is right but gst-launch 
is error on ARM :)
Comment 7 nanwang 2005-07-22 02:53:26 UTC
Some comments, I checked gst-plugins-0.8.8 , under directory gst/qtdemux/
in qtdemux.c ,function gst_qtdemux_loop_header ,the codes are:

/* don't believe bytestream */
//cur_offset = gst_bytestream_tell (qtdemux->bs);
 cur_offset = qtdemux->offset;

Why not use bytestream ? Is bytestream lib error here ?
Comment 8 Ronald Bultje 2005-07-22 06:31:51 UTC
No. Those comments are erronous.
Comment 9 Tim-Philipp Müller 2006-05-02 13:32:07 UTC
This is very unlikely to get fixed in the old 0.8 series.

Please file a new bug report or re-open this one if this still happens with GStreamer-0.10 gst-ffmpeg (CVS).