AnsweredAssumed Answered

Playing low-latency H.264 video with i.MX6Q

Question asked by rebelalliance on Apr 16, 2013

Hi,

 

Ok I am running into an issue which I haven’t been able to surmount and which I need the answers to in order to qualify this chip for our use:

 

1) Is this decoder able to play low-latency streams aka "intra-refresh"?  There is some confusion about this so let me clarify.  A low latency stream, as we call it, is one which has no "I" frame per se but only "P" frames.  The "I" Frame is actually embedded inside the "P" frame in slices.  This is not nonstandard but is uncommon because it is used mostly in broadcast mode.  We generate these low-latency streams so we need a decoder which is able to decode such streams. 

What I did was save the streams to a TS file and playback using playbin2.  This works and we have been able to qualify many different streams and observe their error resiliency.  However, the low-latency stream have not worked using playbin2 (they don’t play).  Here is their errored output:


root@freescale ~/test$ gst-launch-0.10 filesrc location=./1080p30_low_latency.ts typefind=true ! queue ! aiurdemux ! queue max-size-time=0 max-size-buffers=0 ! vpudec low-latency=true frame-plus=1 framedrop=false ! mfw_v4lsink

 

MFW_GST_V4LSINK_PLUGIN 3.0.5 build on Mar 26 2013 11:49:26.

Setting pipeline to PAUSED ...

[INFO]  Product Info: i.MX6Q/D/S

vpudec versions

        plugin: 3.0.5

        wrapper: 1.0.28(VPUWRAPPER_ARM_LINUX Build on Mar 26 2013 11:48:15)

        vpulib: 5.4.10

        firmware: 2.1.8.34588

Pipeline is PREROLLING ...

Aiur: 3.0.5

Core: BLN_MAD-MMLAYER_MPG2PARSER_04.04.04  build on Dec 11 2012 13:39:16

  mime: video/mpeg, mpegversion=(int)[1,2]; video/mpegts, systemstream=true; video/x-cdxa

  file: /usr/lib/imx-mm/parser/lib_mpg2_parser_arm11_elinux.so.3.1

Content Info:

        URI:

              file:///root/test/1080p30_low_latency.ts

        Idx File:

              /root/.aiur/.root.test.1080p30_low_latency.ts.aidx

        Seekable  : Yes

        Size(byte): 21366012

 

 

Mpeg2CreateParser:parser created successfully

Movie Info:

        Seekable  : Yes

        Live      : No

        Duration  : 0:00:30.800000000

        ReadMode  : File

        programs    : 1

        Track     : 1

 

 

Track 00 [video_001031] Enabled

        ppid: 1, ppid 49

        Duration: 0:00:30.800000000

        Language:

        Mime:

              video/x-h264, parsed=(boolean)true, width=(int)1920, height=(int)1088, framerate

              =(fraction)30/1, codec_data=(buffer)000001674d00299a6280f0044fcb80b5010101400000

              fa00003a983a1800cf900033e52ef2e3430019f200067ca5de5c2800

 

 

** (gst-launch-0.10:3380): CRITICAL **: gst_vpudec_chain: assertion `vpudec->context.handle' failed

Pipeline is PREROLLED ...

Setting pipeline to PLAYING ...

New clock: GstSystemClock

Got EOS from element "pipeline0".

Execution ended after 446333 ns.

Setting pipeline to PAUSED ...

Running time 0:00:00.001071000 render fps 0.000

Setting pipeline to READY ...

Setting pipeline to NULL ...

Total rendered:0

Freeing pipeline ...

[--->FINALIZE v4l_sink

[--->FINALIZE aiurdemux

 



Can someone verify if the decoder with the i.MX6Q able to decode these low-latency streams?  Or is the above definitive conclusion that it cannot do it?

 

PS: Attached is the low latency TS file which I'm attempting to play back.

PPS: Using a Sabre SDB Development Board with Linux.

 

Best Regards,

Umar

Original Attachment has been moved to: 1080p30_low_latency.ts.zip

Outcomes