Re: GStreamer encoding profile for the Meizu M6 player



Luis Menina wrote:
> Hi list !
>
> I'm still investigating on why videos encoded with gstreamer fail to
> play on my Meizu M6 digital player, while converting them with
> mencoder works.
>
> I had since last time [1] tried to generate with gstreamer :
> - avi files with a video stream only (no audio stream)
> - avi files with an audio stream only (no video stream)
> ...but they all failed to play too.
>
> So I tried something else : creating a sample file with gstreamer with
> only a video stream, and encoding the file with mencoder with direct
> copy of the video stream.
>
> The fast is that the video produced by mencoder, and based on the
> gstreamer-generated one, works ! As the video stream was untouched
> during the process, that means IMHO that the container is the one at
> fault here.
>
> You can generate the gstreamer test file with this command :
> gst-launch-0.10 videotestsrc num-buffers=100 !
> 'video/x-raw-yuv,framerate=(fraction)20/1,width=320,height=240' !
> videoflip method=clockwise ! xvidenc bitrate=384000 max-bframes=0 !
> queue ! avimux name=mux ! progressreport ! filesink
> location=gstreamer.avi
>
> Then, you can generate the mencoder test file with this command :
> mencoder gstreamer.avi -ovc copy -o mencoder.avi
>
> You'll find attached both logs generated (and cleaned up a bit) with
> the following syntax :
> GST_DEBUG=avidemux:3,riff:3 gst-launch-0.10 playbin2 uri=file:///.....
>
> But you may prefer read directly the attached diff.log file,
> containing the diff of both files, and showing the fields that are
> different between both avi files.
>
> I'd be grateful if someone could tell me which field causes the
> problem, or how I can change those fields values. Even just knowing if
> the problem comes from the firmware of my player or from gstreamer
> would be useful !
>
> Thanks in advance,
> -- 
> Luis
>
> [1]
> http://mail.gnome.org/archives/gnome-multimedia/2009-October/msg00018.html
>

hi,


-INFO················avidemux·gstavidemux.c:981:gst_avi_demux_parse_avih:<avidemux0>··flags·······0x00000010

+INFO················avidemux·gstavidemux.c:981:gst_avi_demux_parse_avih:<avidemux0>··flags·······0x00000910



this means gstreamer us using AVIF_HASINDEX where mencoder used
HASINDEX|ISINTERLEAVED|TRUSTCKTYPE. gstreamer should probably set
ISINTERLEAVED as well (can you file a bug, I just checked this from
http://www.opennet.ru/docs/formats/avi.txt). I could not find what
TRUSTCKTYPE is used for (even MS just uses it in their examples 
http://msdn.microsoft.com/en-us/library/dd388641%28VS.85%29.aspx, maybe
we shoudl do that too).


the other changes is that mencoder cleared the avih.bps, but specify
strh.bufsize

finally gstreamer write a dmlh chunk which mencoder does not write.

Can you hack the gstreamer generated file with a hex editor? If so
replace "DMLH" in the file with "JUNK", then the dmlh is skipped
(hopefully). Also try to lookup the other values and change then one by
one. Luckilly its not that many differences.

Stefan



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]