Project Home
Project Home
Documents
Documents
Wiki
Wiki
Discussion Forums
Discussions
Project Information
Project Info
Forum Topic - Running my h264 decoder with MME: Page 1 of 2 (40 Items)
   
Running my h264 decoder with MME  
Hi Peter,

I have tried running h264 decoder filter with MME. It is not able to load the DLL(it is there in the DLL dir). What is 
the issue?

*********************
io-media-local.cfg,    I have added following lines
format {
			url = "*.264"
			parser = "h264_decoder"
		}
keepdll {
			name = "h264_decoder"
			optional = yes
		}
****************

I have started MME with folowing commands

io-fs-media -d tmp -cpages=4 -cbundles=0
qdb -c /db/qdb.cfg -v -Otempstore=/fs/tmpfs -Rset
mcd /tmp/stage/etc/mme/mcd.conf
io-media-generic -DD -c /tmp/stage/etc/io-media-local.cfg -M mmf,dlldir=/tmp/stage/armle/lib/dll/mmedia
mme-generic -c /tmp/stage/etc/mme.conf


*****************************
See the error log below

Jan 01 00:39:34    5    27     0 MME:mmpl_connect(236): Thread 11 connecting to database.
Jan 01 00:39:34    5    27     0 MME:mmpl_connect(247): Thread 11 connected to database.
Jan 01 00:39:34    5    27     0 MME:ocb_calloc(70): Connection to MME opened (ocb 2bc580).
Jan 01 00:39:34    5    27     0 MME:io_handle_msg(613): RCV -> MME_IOMSG_TYPE_PLAY_FILE: "msid=1, filename=BA_MW_D.264"

Jan 01 00:39:34    5    27     0 MME:mme_ms_unlock(702): Unlock call for media store 1 of type playback.
Jan 01 00:39:34    7    20     1 io-media-generic/trackplayer: Calling graph handler for dcmd STOP
Jan 01 00:39:34    7    20     1 io-media-generic/trackplayer: Dcmd STOP returning 0
Jan 01 00:39:34    7    20     1 io-media-generic/trackplayer: Calling graph handler for dcmd GETSTATUS
Jan 01 00:39:34    7    20     1 io-media-generic/trackplayer: Dcmd GETSTATUS returning 0
Jan 01 00:39:34    5    27     0 MME:_suspend_sync(1124): Suspending sync:  ccid 1, msid 1
Jan 01 00:39:34    5    27     0 MME:mme_ms_lock(541): Lock call for media store 1 of type playback.
Jan 01 00:39:34    5    27     0 MME:_getgraph(3373): Detaching input from graph on controlcontext 1
Jan 01 00:39:34    7    20     1 io-media-generic/trackplayer: Calling graph handler for dcmd SETSPEED
Jan 01 00:39:34    7    20     1 io-media-generic/trackplayer: Dcmd SETSPEED returning 0
Jan 01 00:39:34    7    20     1 io-media-generic/trackplayer: Calling graph handler for dcmd GETSTATUS
Jan 01 00:39:34    7    20     1 io-media-generic/trackplayer: Dcmd GETSTATUS returning 0
Jan 01 00:39:34    7    20     1 io-media-generic/trackplayer: Calling graph handler for dcmd SETNOTIFICATION
Jan 01 00:39:34    7    20     1 io-media-generic/trackplayer: Dcmd SETNOTIFICATION returning 0
Jan 01 00:39:34    7    20     1 io-media-generic/trackplayer: Calling graph handler for dcmd ATTACHINPUT
Jan 01 00:39:34    5    27     0 MME:cleanup_thread(262): Got pulse with code 0 and index 0.
Jan 01 00:39:34    6    20     1 io-media-generic/mmf: URL '/media/drive/BA_MW_D.264' matches pattern '*.264'
Jan 01 00:39:34    7    20     1 io-media-generic/trackplayer: Tag 'format' has 0 kids
Jan 01 00:39:34    6    20     1 io-media-generic/mmf: Setting long resource 'StreamerStickyError' (value='1')
Jan 01 00:39:34    5    20     1 io-media-generic/trackplayer: Skipping video subgraph because there is no video device 
specified.
Jan 01 00:39:34    6    20     1 io-media-generic/mmf: Setting long resource 'TrickPlayVolumeFade' (value='10')
Jan 01 00:39:34    5    20     1 io-media-generic/mmf: Configuring the queue for -1 bytes, lw = 0, hw = 0.
Jan 01 00:39:34    4    20     1 io-media-generic/trackplayer: Couldn't load the h264_decoder filter (based on the 
parser tag)
Jan 01 00:39:34    7    20     1 io-media-generic/trackplayer: Hint mode allows a filter search for this input
Jan 01 00:39:36    6    20     1 io-media-generic/mmf: Setting long resource 'AVSyncDelay' (value='0')
Jan 01 00:39:36    7    20     1 io-media-generic/mmf: Resource 'AVSyncDelay' is not supported (but optional)
Jan 01 00:39:36    5    20     1 io-media-generic/trackplayer: Skipping video subgraph because there is no device 
specified.
Jan 01 00:39:36    7    20    ...
View Full Message
RE: Running my h264 decoder with MME  
What happens if you remove the "optional=yes" line? 

-----Original Message-----
From: Venkatarao Patnaik Balivada [mailto:community-noreply@qnx.com] 
Sent: April 22, 2009 9:52 AM
To: general-multimedia
Subject: Running my h264 decoder with MME

Hi Peter,

I have tried running h264 decoder filter with MME. It is not able to
load the DLL(it is there in the DLL dir). What is the issue?

*********************
io-media-local.cfg,    I have added following lines
format {
			url = "*.264"
			parser = "h264_decoder"
		}
keepdll {
			name = "h264_decoder"
			optional = yes
		}
****************

I have started MME with folowing commands

io-fs-media -d tmp -cpages=4 -cbundles=0
qdb -c /db/qdb.cfg -v -Otempstore=/fs/tmpfs -Rset
mcd /tmp/stage/etc/mme/mcd.conf
io-media-generic -DD -c /tmp/stage/etc/io-media-local.cfg -M
mmf,dlldir=/tmp/stage/armle/lib/dll/mmedia
mme-generic -c /tmp/stage/etc/mme.conf


*****************************
See the error log below

Jan 01 00:39:34    5    27     0 MME:mmpl_connect(236): Thread 11
connecting to database.
Jan 01 00:39:34    5    27     0 MME:mmpl_connect(247): Thread 11
connected to database.
Jan 01 00:39:34    5    27     0 MME:ocb_calloc(70): Connection to MME
opened (ocb 2bc580).
Jan 01 00:39:34    5    27     0 MME:io_handle_msg(613): RCV ->
MME_IOMSG_TYPE_PLAY_FILE: "msid=1, filename=BA_MW_D.264"
Jan 01 00:39:34    5    27     0 MME:mme_ms_unlock(702): Unlock call for
media store 1 of type playback.
Jan 01 00:39:34    7    20     1 io-media-generic/trackplayer: Calling
graph handler for dcmd STOP
Jan 01 00:39:34    7    20     1 io-media-generic/trackplayer: Dcmd STOP
returning 0
Jan 01 00:39:34    7    20     1 io-media-generic/trackplayer: Calling
graph handler for dcmd GETSTATUS
Jan 01 00:39:34    7    20     1 io-media-generic/trackplayer: Dcmd
GETSTATUS returning 0
Jan 01 00:39:34    5    27     0 MME:_suspend_sync(1124): Suspending
sync:  ccid 1, msid 1
Jan 01 00:39:34    5    27     0 MME:mme_ms_lock(541): Lock call for
media store 1 of type playback.
Jan 01 00:39:34    5    27     0 MME:_getgraph(3373): Detaching input
from graph on controlcontext 1
Jan 01 00:39:34    7    20     1 io-media-generic/trackplayer: Calling
graph handler for dcmd SETSPEED
Jan 01 00:39:34    7    20     1 io-media-generic/trackplayer: Dcmd
SETSPEED returning 0
Jan 01 00:39:34    7    20     1 io-media-generic/trackplayer: Calling
graph handler for dcmd GETSTATUS
Jan 01 00:39:34    7    20     1 io-media-generic/trackplayer: Dcmd
GETSTATUS returning 0
Jan 01 00:39:34    7    20     1 io-media-generic/trackplayer: Calling
graph handler for dcmd SETNOTIFICATION
Jan 01 00:39:34    7    20     1 io-media-generic/trackplayer: Dcmd
SETNOTIFICATION returning 0
Jan 01 00:39:34    7    20     1 io-media-generic/trackplayer: Calling
graph handler for dcmd ATTACHINPUT
Jan 01 00:39:34    5    27     0 MME:cleanup_thread(262): Got pulse with
code 0 and index 0.
Jan 01 00:39:34    6    20     1 io-media-generic/mmf: URL
'/media/drive/BA_MW_D.264' matches pattern '*.264'
Jan 01 00:39:34    7    20     1 io-media-generic/trackplayer: Tag
'format' has 0 kids
Jan 01 00:39:34    6    20     1 io-media-generic/mmf: Setting long
resource 'StreamerStickyError' (value='1')
Jan 01 00:39:34    5    20     1 io-media-generic/trackplayer: Skipping
video subgraph because there is no video device specified.
Jan 01 00:39:34    6    20     1 io-media-generic/mmf: Setting long
resource 'TrickPlayVolumeFade' (value='10')
Jan 01 00:39:34    5    20     1 io-media-generic/mmf: Configuring the
queue for -1 bytes, lw = 0, hw = 0.
Jan 01 00:39:34    4    20     1 io-media-generic/trackplayer: Couldn't
load the h264_decoder filter (based on the parser tag)
Jan 01 00:39:34    7    20     1 io-media-generic/trackplayer: Hint mode
allows a filter search for this input
Jan 01 00:39:36    6    20     1 io-media-generic/mmf: Setting long
resource...
View Full Message
Re: RE: Running my h264 decoder with MME  
Hi Peter,

Still doesn't work.
There could be issue with some interface function problem? Because I specified filter as "wav_parser" for *.264, still 
it gives error saying  couldn't load the wav_parser filter. Before loading the filter, does it try to match with input 
channel of the filter, where it is failing.?
Re: Running my h264 decoder with MME  
Venkatarao Patnaik Balivada wrote:
> Still doesn't work.

I didn't expect removing the "optional" line to make it work; I was 
hoping it would help us narrow down the nature of the failure.

The "Couldn't load the h264_decoder filter..." message is not entirely 
accurate -- all it really means that a library function that is supposed 
to load the named filter and connect it to the output of the previous 
filter in the graph has failed.  There are several possible reasons it 
could fail:

#1 The named filter DLL does not exist

#2 The DLL exists but failed to load

#3 The DLL could be loaded but turned out incompatible with the Addon 
Interfaces (AOI) library

#4 The DLL was recognized by the AOI library but turned out not to 
implement enough interfaces to be recognized as an MMF filter

#5 The DLL is a filter but the creation of a filter instance fails for 
some reason

#6 The filter was actually created but then it rejected the output from 
the previous filter (io-media wants the RateStream() or RateFormat() 
function to return a rating of at least 20).

Without the "optional=yes" line, io-media will fail to start up unless 
the DLL is loaded and confirmed to be a correct AOI DLL.  If removing 
the line didn't change the error messages that you're seeing, that means 
that the problem must be #4, #5, or #6.  You can narrow it down by 
adding some debug messages to the interface functions in your filter. 
In particular, if your Create() function never gets called, that would 
mean #4.  If you tell me which of your functions get called and which 
ones don't, that should give me a good idea of what the problem is.
Re: Running my h264 decoder with MME  
Thanks Peter. I will try and let you know tomorrow. Now I have got some idea how I can put debug messages, found in 
aoi_errlog.h.
Re: Running my h264 decoder with MME  
Venkatarao Patnaik Balivada wrote:
> Thanks Peter. I will try and let you know tomorrow. Now I have got some idea how I can put debug messages, found in 
aoi_errlog.h.

Keep in mind that if you use the AO_LOG() macro, AO_LOG_DEBUG1 and 
AO_LOG_DEBUG2 level messages are completely #ifdefed out by default -- 
you can switch them on by #defining AO_LOGLVL before you include 
<aoi/aoi_errlog.h>.  (Or you can just call AoLog() directly.)

Wojtek (not Peter)
Re: Running my h264 decoder with MME  
I feel it is better to try with MP4 file, otherwise I need to write some stubs.
I am trying with MP4 file which has H264 video content.
Re: Running my h264 decoder with MME  
Hi Peter,

I could play the H.264 mp4 file  with VLC media player.

Does the mp4_parser handle H264 AVC1 format? I debugged the parser and it fails in the following condition as has_esds 
field found to be zero. I don't know much about MP4 format.

	if (fu->file_info->tracks[i].has_esds && esds->has_type4) {
				mp4v_type = esds->descr_type_4.object_type_id;
                AoLog(AO_LOG_DEBUG1,"mp4_parser->SetChannelParameters() mp4v_type = %d", mp4v_type);
Re: Running my h264 decoder with MME  
Peter,

Figured out that MP4 file has quicktime mov format, I tried another mp4    file, it seems to detect it properly. But to 
enable video stream to work, I need to specify output device.
Can you give some quick help, what all required to do to enable video output device.
Do I need to include in mme_data.sql?
I will try first include display device in BSP.
Re: Running my h264 decoder with MME  
Hi Peter,

I have added display driver. I modified mme_data.sql to add following line

INSERT INTO outputdevices(type, permanent, name, devicepath) VALUES(1, 1, 'defaultoutput2', 'gf:0000,0000,0');

device entry found from
# ls -l /dev/io-display/
total 0
crw-rw----  1 0         0            0,   1 Jan 01 00:59 0000,0000,0

Then I tried to decode MP4 file, it still gives error saying "no device specified".

Jan 01 00:56:36    6    20     1 io-media-generic/mmf: URL '/media/drive/a1vts_750_001.mp4' matches pattern '*.mp4'
Jan 01 00:56:36    7    20     1 io-media-generic/trackplayer: Tag 'format' has 0 kids
Jan 01 00:56:36    6    20     1 io-media-generic/mmf: Setting long resource 'StreamerStickyError' (value='1')
Jan 01 00:56:36    5    20     1 io-media-generic/trackplayer: Skipping video subgraph because there is no video device 
specified.
Jan 01 00:56:36    6    20     1 io-media-generic/mmf: Setting long resource 'TrickPlayVolumeFade' (value='10')
Jan 01 00:56:36    5    20     1 io-media-generic/mmf: Configuring the queue for -1 bytes, lw = 0, hw = 0.
Jan 01 00:56:36    6    20     1 io-media-generic/aoi: mp4_parser->SetChannelParameters() num_vid_tracks = 1, 
num_aud_tracks = 1
Jan 01 00:56:36    6    20     1 io-media-generic/aoi: mp4_parser->SetChannelParameters() fourcc = mp4v
Jan 01 00:56:36    6    20     1 io-media-generic/aoi: mp4_parser->SetChannelParameters() fourcc = mp4a
Jan 01 00:56:36    6    20     1 io-media-generic/aoi: mp4_parser->SetChannelParameters() mp4v_type = 32
Jan 01 00:56:36    5    20     1 io-media-generic/aoi: MP4Parser: max sample size = 18429.
Jan 01 00:56:36    5    20     1 io-media-generic/aoi: MP4Parser: max sample size = 403.
Jan 01 00:56:36    6    20     1 io-media-generic/trackplayer: Loaded the mp4_parser filter based on the parser tag
Jan 01 00:56:36    6    20     1 io-media-generic/mmf: Setting long resource 'AVSyncDelay' (value='0')
Jan 01 00:56:36    5    20     1 io-media-generic/trackplayer: Skipping video subgraph because there is no device 
specified.
Jan 01 00:56:36    7    20     1 io-media-generic/trackplayer: No video stream found.
Jan 01 00:56:36    7    20     1 io-media-generic/trackplayer: Found audio stream.
Re: Running my h264 decoder with MME  
> Hi Peter,
> 
> I have added display driver. I modified mme_data.sql to add following line
> 
> INSERT INTO outputdevices(type, permanent, name, devicepath) VALUES(1, 1, 
> 'defaultoutput2', 'gf:0000,0000,0');
> 
> device entry found from
> # ls -l /dev/io-display/
> total 0
> crw-rw----  1 0         0            0,   1 Jan 01 00:59 0000,0000,0
> 
> Then I tried to decode MP4 file, it still gives error saying "no device 
> specified".
> 
> Jan 01 00:56:36    6    20     1 io-media-generic/mmf: URL '/media/drive/
> a1vts_750_001.mp4' matches pattern '*.mp4'
> Jan 01 00:56:36    7    20     1 io-media-generic/trackplayer: Tag 'format' 
> has 0 kids
> Jan 01 00:56:36    6    20     1 io-media-generic/mmf: Setting long resource 
> 'StreamerStickyError' (value='1')
> Jan 01 00:56:36    5    20     1 io-media-generic/trackplayer: Skipping video 
> subgraph because there is no video device specified.
> Jan 01 00:56:36    6    20     1 io-media-generic/mmf: Setting long resource 
> 'TrickPlayVolumeFade' (value='10')
> Jan 01 00:56:36    5    20     1 io-media-generic/mmf: Configuring the queue 
> for -1 bytes, lw = 0, hw = 0.
> Jan 01 00:56:36    6    20     1 io-media-generic/aoi: mp4_parser->
> SetChannelParameters() num_vid_tracks = 1, num_aud_tracks = 1
> Jan 01 00:56:36    6    20     1 io-media-generic/aoi: mp4_parser->
> SetChannelParameters() fourcc = mp4v
> Jan 01 00:56:36    6    20     1 io-media-generic/aoi: mp4_parser->
> SetChannelParameters() fourcc = mp4a
> Jan 01 00:56:36    6    20     1 io-media-generic/aoi: mp4_parser->
> SetChannelParameters() mp4v_type = 32
> Jan 01 00:56:36    5    20     1 io-media-generic/aoi: MP4Parser: max sample 
> size = 18429.
> Jan 01 00:56:36    5    20     1 io-media-generic/aoi: MP4Parser: max sample 
> size = 403.
> Jan 01 00:56:36    6    20     1 io-media-generic/trackplayer: Loaded the 
> mp4_parser filter based on the parser tag
> Jan 01 00:56:36    6    20     1 io-media-generic/mmf: Setting long resource 
> 'AVSyncDelay' (value='0')
> Jan 01 00:56:36    5    20     1 io-media-generic/trackplayer: Skipping video 
> subgraph because there is no device specified.
> Jan 01 00:56:36    7    20     1 io-media-generic/trackplayer: No video stream
>  found.
> Jan 01 00:56:36    7    20     1 io-media-generic/trackplayer: Found audio 
> stream.


It's still not picking up your graphics device.  There is another entry to modify in the mme_data.sql file:

INSERT INTO zoneoutputs(zoneid, outputdeviceid) SELECT 1, outputdeviceid FROM outputdevices WHERE name='defaultoutput2';

Re: Running my h264 decoder with MME  
Still it doesn't work. device entry need to be non-zero ids? Is that a problem?

> > Hi Peter,
> > 
> > I have added display driver. I modified mme_data.sql to add following line
> > 
> > INSERT INTO outputdevices(type, permanent, name, devicepath) VALUES(1, 1, 
> > 'defaultoutput2', 'gf:0000,0000,0');
> > 
> > device entry found from
> > # ls -l /dev/io-display/
> > total 0
> > crw-rw----  1 0         0            0,   1 Jan 01 00:59 0000,0000,0
> > 
> > Then I tried to decode MP4 file, it still gives error saying "no device 
> > specified".
> > 
> > Jan 01 00:56:36    6    20     1 io-media-generic/mmf: URL '/media/drive/
> > a1vts_750_001.mp4' matches pattern '*.mp4'
> > Jan 01 00:56:36    7    20     1 io-media-generic/trackplayer: Tag 'format' 
> 
> > has 0 kids
> > Jan 01 00:56:36    6    20     1 io-media-generic/mmf: Setting long resource
>  
> > 'StreamerStickyError' (value='1')
> > Jan 01 00:56:36    5    20     1 io-media-generic/trackplayer: Skipping 
> video 
> > subgraph because there is no video device specified.
> > Jan 01 00:56:36    6    20     1 io-media-generic/mmf: Setting long resource
>  
> > 'TrickPlayVolumeFade' (value='10')
> > Jan 01 00:56:36    5    20     1 io-media-generic/mmf: Configuring the queue
>  
> > for -1 bytes, lw = 0, hw = 0.
> > Jan 01 00:56:36    6    20     1 io-media-generic/aoi: mp4_parser->
> > SetChannelParameters() num_vid_tracks = 1, num_aud_tracks = 1
> > Jan 01 00:56:36    6    20     1 io-media-generic/aoi: mp4_parser->
> > SetChannelParameters() fourcc = mp4v
> > Jan 01 00:56:36    6    20     1 io-media-generic/aoi: mp4_parser->
> > SetChannelParameters() fourcc = mp4a
> > Jan 01 00:56:36    6    20     1 io-media-generic/aoi: mp4_parser->
> > SetChannelParameters() mp4v_type = 32
> > Jan 01 00:56:36    5    20     1 io-media-generic/aoi: MP4Parser: max sample
>  
> > size = 18429.
> > Jan 01 00:56:36    5    20     1 io-media-generic/aoi: MP4Parser: max sample
>  
> > size = 403.
> > Jan 01 00:56:36    6    20     1 io-media-generic/trackplayer: Loaded the 
> > mp4_parser filter based on the parser tag
> > Jan 01 00:56:36    6    20     1 io-media-generic/mmf: Setting long resource
>  
> > 'AVSyncDelay' (value='0')
> > Jan 01 00:56:36    5    20     1 io-media-generic/trackplayer: Skipping 
> video 
> > subgraph because there is no device specified.
> > Jan 01 00:56:36    7    20     1 io-media-generic/trackplayer: No video 
> stream
> >  found.
> > Jan 01 00:56:36    7    20     1 io-media-generic/trackplayer: Found audio 
> > stream.
> 
> 
> It's still not picking up your graphics device.  There is another entry to 
> modify in the mme_data.sql file:
> 
> INSERT INTO zoneoutputs(zoneid, outputdeviceid) SELECT 1, outputdeviceid FROM 
> outputdevices WHERE name='defaultoutput2';


Re: Running my h264 decoder with MME  
> Still it doesn't work. device entry need to be non-zero ids? Is that a problem
> ?
> 
> > > Hi Peter,
> > > 
> > > I have added display driver. I modified mme_data.sql to add following line
> 
> > > 
> > > INSERT INTO outputdevices(type, permanent, name, devicepath) VALUES(1, 1, 
> 
> > > 'defaultoutput2', 'gf:0000,0000,0');
> > > 
> > > device entry found from
> > > # ls -l /dev/io-display/
> > > total 0
> > > crw-rw----  1 0         0            0,   1 Jan 01 00:59 0000,0000,0
> > > 
> > > Then I tried to decode MP4 file, it still gives error saying "no device 
> > > specified".
> > > 
> > > Jan 01 00:56:36    6    20     1 io-media-generic/mmf: URL '/media/drive/
> > > a1vts_750_001.mp4' matches pattern '*.mp4'
> > > Jan 01 00:56:36    7    20     1 io-media-generic/trackplayer: Tag 
> 'format' 
> > 
> > > has 0 kids
> > > Jan 01 00:56:36    6    20     1 io-media-generic/mmf: Setting long 
> resource
> >  
> > > 'StreamerStickyError' (value='1')
> > > Jan 01 00:56:36    5    20     1 io-media-generic/trackplayer: Skipping 
> > video 
> > > subgraph because there is no video device specified.
> > > Jan 01 00:56:36    6    20     1 io-media-generic/mmf: Setting long 
> resource
> >  
> > > 'TrickPlayVolumeFade' (value='10')
> > > Jan 01 00:56:36    5    20     1 io-media-generic/mmf: Configuring the 
> queue
> >  
> > > for -1 bytes, lw = 0, hw = 0.
> > > Jan 01 00:56:36    6    20     1 io-media-generic/aoi: mp4_parser->
> > > SetChannelParameters() num_vid_tracks = 1, num_aud_tracks = 1
> > > Jan 01 00:56:36    6    20     1 io-media-generic/aoi: mp4_parser->
> > > SetChannelParameters() fourcc = mp4v
> > > Jan 01 00:56:36    6    20     1 io-media-generic/aoi: mp4_parser->
> > > SetChannelParameters() fourcc = mp4a
> > > Jan 01 00:56:36    6    20     1 io-media-generic/aoi: mp4_parser->
> > > SetChannelParameters() mp4v_type = 32
> > > Jan 01 00:56:36    5    20     1 io-media-generic/aoi: MP4Parser: max 
> sample
> >  
> > > size = 18429.
> > > Jan 01 00:56:36    5    20     1 io-media-generic/aoi: MP4Parser: max 
> sample
> >  
> > > size = 403.
> > > Jan 01 00:56:36    6    20     1 io-media-generic/trackplayer: Loaded the 
> 
> > > mp4_parser filter based on the parser tag
> > > Jan 01 00:56:36    6    20     1 io-media-generic/mmf: Setting long 
> resource
> >  
> > > 'AVSyncDelay' (value='0')
> > > Jan 01 00:56:36    5    20     1 io-media-generic/trackplayer: Skipping 
> > video 
> > > subgraph because there is no device specified.
> > > Jan 01 00:56:36    7    20     1 io-media-generic/trackplayer: No video 
> > stream
> > >  found.
> > > Jan 01 00:56:36    7    20     1 io-media-generic/trackplayer: Found audio
>  
> > > stream.
> > 
> > 
> > It's still not picking up your graphics device.  There is another entry to 
> > modify in the mme_data.sql file:
> > 
> > INSERT INTO zoneoutputs(zoneid, outputdeviceid) SELECT 1, outputdeviceid 
> FROM 
> > outputdevices WHERE name='defaultoutput2';
> 
> 

Is the entry iin your /dev/io-display directory actually 0000,0000,0?  Can you send an updated slog from the newest 
failure, it might give us some more clues.
Re: Running my h264 decoder with MME  
Yes you are right.
See the slog below

Jan 01 00:01:38    7    20     1 io-media-generic: open('graphs/trackplayer/default')
Jan 01 00:01:38    7    20     1 io-media-generic/trackplayer: Calling graph create function
Jan 01 00:01:38    6    20     1 io-media-generic/trackplayer: Created graph instance 'default'
Jan 01 00:01:38    6    20     1 io-media-generic: open( 'graphs/trackplayer/default' ): success
Jan 01 00:01:38    7    20     1 io-media-generic/trackplayer: Calling graph handler for dcmd GRAPHOPTIONS
Jan 01 00:01:38    7    20     1 io-media-generic/trackplayer: Dcmd GRAPHOPTIONS returning 0
Jan 01 00:01:38    7    20     1 io-media-generic/trackplayer: Calling graph handler for dcmd SETNOTIFICATION
Jan 01 00:01:38    7    20     1 io-media-generic/trackplayer: Dcmd SETNOTIFICATION returning 0
Jan 01 00:01:38    7    20     1 io-media-generic/trackplayer: Calling graph handler for dcmd SETTRANSITION
Jan 01 00:01:38    7    20     1 io-media-generic/trackplayer: Dcmd SETTRANSITION returning 0
Jan 01 00:01:38    7    20     1 io-media-generic/trackplayer: Calling graph handler for dcmd CAPABILITIES
Jan 01 00:01:38    7    20     1 io-media-generic/trackplayer: Dcmd CAPABILITIES returning 0
Jan 01 00:01:38    7    20     1 io-media-generic/trackplayer: Calling graph handler for dcmd ATTACHOUTPUT
Jan 01 00:01:38    5    20     1 io-media-generic/mmf: writer hint snd:* found
Jan 01 00:01:38    6    20     1 io-media-generic/mmf: URL 'snd:/dev/snd/pcmPreferredp' matches pattern 'snd:*'
Jan 01 00:01:38    7    20     1 io-media-generic/trackplayer: Dcmd ATTACHOUTPUT returning 0
Jan 01 00:01:38    7    20     1 io-media-generic/trackplayer: Calling graph handler for dcmd SETVOLUME
Jan 01 00:01:38    7    20     1 io-media-generic/trackplayer: Dcmd SETVOLUME returning 0
Jan 01 00:01:38    7    20     1 io-media-generic/trackplayer: Calling graph handler for dcmd SETSPEED
Jan 01 00:01:38    7    20     1 io-media-generic/trackplayer: Dcmd SETSPEED returning 0
Jan 01 00:01:38    7    20     1 io-media-generic/trackplayer: Calling graph handler for dcmd GETSTATUS
Jan 01 00:01:38    7    20     1 io-media-generic/trackplayer: Dcmd GETSTATUS returning 0
Jan 01 00:01:38    7    20     1 io-media-generic/trackplayer: Calling graph handler for dcmd SETNOTIFICATION
Jan 01 00:01:38    7    20     1 io-media-generic/trackplayer: Dcmd SETNOTIFICATION returning 0
Jan 01 00:01:38    7    20     1 io-media-generic/trackplayer: Calling graph handler for dcmd ATTACHINPUT
Jan 01 00:01:40    6    20     1 io-media-generic/mmf: URL '/media/drive/a1vts_750_001.mp4' matches pattern '*.mp4'
Jan 01 00:01:40    7    20     1 io-media-generic/trackplayer: Tag 'format' has 0 kids
Jan 01 00:01:40    6    20     1 io-media-generic/mmf: Setting long resource 'StreamerStickyError' (value='1')
Jan 01 00:01:40    5    20     1 io-media-generic/trackplayer: Skipping video subgraph because there is no video device 
specified.
Jan 01 00:01:40    6    20     1 io-media-generic/mmf: Setting long resource 'TrickPlayVolumeFade' (value='10')
Jan 01 00:01:40    5    20     1 io-media-generic/mmf: Configuring the queue for -1 bytes, lw = 0, hw = 0.
Jan 01 00:01:40    6    20     1 io-media-generic/aoi: mp4_parser->SetChannelParameters() num_vid_tracks = 1, 
num_aud_tracks = 1
Jan 01 00:01:40    6    20     1 io-media-generic/aoi: mp4_parser->SetChannelParameters() fourcc = mp4v
Jan 01 00:01:40    6    20     1 io-media-generic/aoi: mp4_parser->SetChannelParameters() fourcc = mp4a
Jan 01 00:01:40    6    20     1 io-media-generic/aoi: mp4_parser->SetChannelParameters() mp4v_type = 32
Jan 01 00:01:40    5    20     1 io-media-generic/aoi: MP4Parser: max sample size = 18429.
Jan 01 00:01:40    5    20     1 io-media-generic/aoi: MP4Parser: max sample size = 403.
Jan 01 00:01:40    6    20     1 io-media-generic/trackplayer: Loaded the mp4_parser filter based on the parser tag
Jan 01 00:01:40    6    20     1...
View Full Message
Re: Running my h264 decoder with MME  
The system is trying to hook up your decoder to the audio stream.  Can you take the modifications to the config file out
 and change the Rating function in your h264 decoder to accept the AVC1 fourcc.  That should be sufficient to fix this 
problem (assuming you're using the mp4 parser and using h264 mp4 files).
Re: Running my h264 decoder with MME  
I understand that. But it is not finding video stream before that, because it says "no device specified".
Re: Running my h264 decoder with MME  
After you updated your mme_data.sql file, did you delete your database?  You'll need to do that so that your changes can
 be used.
Re: Running my h264 decoder with MME  
Hi Andrian Boak,

Thanks. It worked. I think I have come to a stage where I can debug my decoder now.
Re: Running my h264 decoder with MME  
Hi,

Now I am getting problem with gf_writer filter.  It fails in CreateGFSurfs(), fails in this condition, what could be the
 problem?

	if (gf_layer_update(f->user->layer, 0) != GF_ERR_OK) {
		AO_LOG(AO_LOG_ERROR,"failed to update layer.");
		return MM_EINVAL;
	}
------------------
Also see the error log below.

Time             Sev Major Minor Args
Jan 01 00:00:55    7    20     1 io-media-generic: open('graphs/trackplayer/default')
Jan 01 00:00:55    7    20     1 io-media-generic/trackplayer: Calling graph create function
Jan 01 00:00:55    6    20     1 io-media-generic/trackplayer: Created graph instance 'default'
Jan 01 00:00:55    6    20     1 io-media-generic: open( 'graphs/trackplayer/default' ): success
Jan 01 00:00:55    7    20     1 io-media-generic/trackplayer: Calling graph handler for dcmd GRAPHOPTIONS
Jan 01 00:00:55    7    20     1 io-media-generic/trackplayer: Dcmd GRAPHOPTIONS returning 0
Jan 01 00:00:55    7    20     1 io-media-generic/trackplayer: Calling graph handler for dcmd SETNOTIFICATION
Jan 01 00:00:55    7    20     1 io-media-generic/trackplayer: Dcmd SETNOTIFICATION returning 0
Jan 01 00:00:55    7    20     1 io-media-generic/trackplayer: Calling graph handler for dcmd SETTRANSITION
Jan 01 00:00:55    7    20     1 io-media-generic/trackplayer: Dcmd SETTRANSITION returning 0
Jan 01 00:00:55    7    20     1 io-media-generic/trackplayer: Calling graph handler for dcmd CAPABILITIES
Jan 01 00:00:55    7    20     1 io-media-generic/trackplayer: Dcmd CAPABILITIES returning 0
Jan 01 00:00:55    7    20     1 io-media-generic/trackplayer: Calling graph handler for dcmd ATTACHOUTPUT
Jan 01 00:00:55    5    20     1 io-media-generic/mmf: writer hint gf:* found
Jan 01 00:00:55    6    20     1 io-media-generic/mmf: URL 'gf:0000,0000,0?layer=1&aspn=72&aspd=77&sat=25' matches pattern 'gf:*'
Jan 01 00:00:55    7    20     1 io-media-generic/trackplayer: Dcmd ATTACHOUTPUT returning 0
Jan 01 00:00:55    1    27     0 MME:_setiomoutputattr(5725): Output device type 2 not supported
Jan 01 00:00:55    7    20     1 io-media-generic/trackplayer: Calling graph handler for dcmd SETSPEED
Jan 01 00:00:55    7    20     1 io-media-generic/trackplayer: Dcmd SETSPEED returning 0
Jan 01 00:00:55    7    20     1 io-media-generic/trackplayer: Calling graph handler for dcmd GETSTATUS
Jan 01 00:00:55    7    20     1 io-media-generic/trackplayer: Dcmd GETSTATUS returning 0
Jan 01 00:00:55    7    20     1 io-media-generic/trackplayer: Calling graph handler for dcmd SETNOTIFICATION
Jan 01 00:00:55    7    20     1 io-media-generic/trackplayer: Dcmd SETNOTIFICATION returning 0
Jan 01 00:00:55    7    20     1 io-media-generic/trackplayer: Calling graph handler for dcmd ATTACHINPUT
Jan 01 00:00:55    6    20     1 io-media-generic/mmf: URL '/media/drive/test.mp4' matches pattern '*.mp4'
Jan 01 00:00:55    7    20     1 io-media-generic/trackplayer: Tag 'format' has 0 kids
Jan 01 00:00:55    6    20     1 io-media-generic/mmf: Setting long resource 'StreamerStickyError' (value='1')
Jan 01 00:00:55    2    20     1 io-media-generic/trackplayer: Skipping audio graph -- no audio device.
Jan 01 00:00:55    6    20     1 io-media-generic/aoi: mp4_parser->SetChannelParameters() num_vid_tracks
 = 1, num_aud_tracks = 0
Jan 01 00:00:55    6    20     1 io-media-generic/aoi: mp4_parser->SetChannelParameters() fourcc = avc1
Jan 01 00:00:55    6    20     1 io-media-generic/aoi: mp4_parser->SetChannelParameters() escaped 0!
Jan 01 00:00:55    5    20     1 io-media-generic/aoi: MP4Parser: max sample size = 19295.
Jan 01 00:00:55    6    20     1 io-media-generic/trackplayer: Loaded the mp4_parser filter based on the parser tag
Jan 01 00:00:55    6    20     1 io-media-generic/mmf: Setting long resource 'AVSyncDelay' (value='0')
Jan 01 00:00:55    5    20     1 io-media-generic/trackplayer: Skipping audio subgraph because there is no device 
specified.
Jan 01 00:00:55    7   ...
View Full Message
Re: Running my h264 decoder with MME  
On Tue, 28 Apr 2009, Venkatarao Patnaik Balivada wrote:

>Hi,
>
>Now I am getting problem with gf_writer filter.  It fails in CreateGFSurfs(), fails in this condition, what could be 
the problem?
>
>	if (gf_layer_update(f->user->layer, 0) != GF_ERR_OK) {
>		AO_LOG(AO_LOG_ERROR,"failed to update layer.");
>		return MM_EINVAL;
>	}



Can you check and see if io-media-generic is still running after that
sequence of events.

If it is not, running dumper will allow you to collect information about
the state of executables when they exited abnormally. (see the docs on
dumper)

Thanks,

Peter

>------------------
>Also see the error log below.
>
>Time             Sev Major Minor Args
>Jan 01 00:00:55    7    20     1 io-media-generic: open('graphs/trackplayer/default')
>Jan 01 00:00:55    7    20     1 io-media-generic/trackplayer: Calling graph create function
>Jan 01 00:00:55    6    20     1 io-media-generic/trackplayer: Created graph instance 'default'
>Jan 01 00:00:55    6    20     1 io-media-generic: open( 'graphs/trackplayer/default' ): success
>Jan 01 00:00:55    7    20     1 io-media-generic/trackplayer: Calling graph handler for dcmd GRAPHOPTIONS
>Jan 01 00:00:55    7    20     1 io-media-generic/trackplayer: Dcmd GRAPHOPTIONS returning 0
>Jan 01 00:00:55    7    20     1 io-media-generic/trackplayer: Calling graph handler for dcmd SETNOTIFICATION
>Jan 01 00:00:55    7    20     1 io-media-generic/trackplayer: Dcmd SETNOTIFICATION returning 0
>Jan 01 00:00:55    7    20     1 io-media-generic/trackplayer: Calling graph handler for dcmd SETTRANSITION
>Jan 01 00:00:55    7    20     1 io-media-generic/trackplayer: Dcmd SETTRANSITION returning 0
>Jan 01 00:00:55    7    20     1 io-media-generic/trackplayer: Calling graph handler for dcmd CAPABILITIES
>Jan 01 00:00:55    7    20     1 io-media-generic/trackplayer: Dcmd CAPABILITIES returning 0
>Jan 01 00:00:55    7    20     1 io-media-generic/trackplayer: Calling graph handler for dcmd ATTACHOUTPUT
>Jan 01 00:00:55    5    20     1 io-media-generic/mmf: writer hint gf:* found
>Jan 01 00:00:55    6    20     1 io-media-generic/mmf: URL 'gf:0000,0000,0?layer=1&aspn=72&aspd=77&sat=25' matches pattern 'gf:*'
>Jan 01 00:00:55    7    20     1 io-
media-generic/trackplayer: Dcmd ATTACHOUTPUT returning 0
>Jan 01 00:00:55    1    27     0 MME:_setiomoutputattr(5725): Output device type 2 not supported
>Jan 01 00:00:55    7    20     1 io-media-generic/trackplayer: Calling graph handler for dcmd SETSPEED
>Jan 01 00:00:55    7    20     1 io-media-generic/trackplayer: Dcmd SETSPEED returning 0
>Jan 01 00:00:55    7    20     1 io-media-generic/trackplayer: Calling graph handler for dcmd GETSTATUS
>Jan 01 00:00:55    7    20     1 io-media-generic/trackplayer: Dcmd GETSTATUS returning 0
>Jan 01 00:00:55    7    20     1 io-media-generic/trackplayer: Calling graph handler for dcmd SETNOTIFICATION
>Jan 01 00:00:55    7    20     1 io-media-generic/trackplayer: Dcmd SETNOTIFICATION returning 0
>Jan 01 00:00:55    7    20     1 io-media-generic/trackplayer: Calling graph handler for dcmd ATTACHINPUT
>Jan 01 00:00:55    6    20     1 io-media-generic/mmf: URL '/media/drive/test.mp4' matches pattern '*.mp4'
>Jan 01 00:00:55    7    20     1 io-media-generic/trackplayer: Tag 'format' has 0 kids
>Jan 01 00:00:55    6    20     1 io-media-generic/mmf: Setting long resource 'StreamerStickyError' (value='1')
>Jan 01 00:00:55    2    20     1 io-media-generic/trackplayer: Skipping audio graph -- no audio device.
>Jan 01 00:00:55    6    20     1 io-media-generic/aoi: mp4_parser->SetChannelParameters() num_vid_tracks = 1, 
num_aud_tracks = 0
>Jan 01 00:00:55    6    20     1 io-media-generic/aoi: mp4_parser->SetChannelParameters() fourcc = avc1
>Jan 01 00:00:55    6    20     1 io-media-generic/aoi:...
View Full Message
Re: Running my h264 decoder with MME  
Hi,

I got the core dump file. But I couldn't find gdb to run on the target.
Should I run ntoarm-gdb on the host? 
Instead of trying this, I want to understand the root cause of this.It might have crashed due to some bug in my decoder,
 I can debug that.

My basic question is, why is MME iterating through each output format, if one of them (I need I420) is supported it 
should stop and connect, right? Is it that none of the formats are supported by gf_writer?

It is difficult for me to debug video writer etc.

I need to write I420 output, can I write to a file instead of gf-writer, through the mmecli  utility? OR I need to write
 seperate app? 
Re: Running my h264 decoder with MME  
Hi,

Can I use rawfile_writer to write my decoded output to a file?
Re: Running my h264 decoder with MME  
Hi,

I just found one sampleapp "audio_out", should I write similar app to write the video output to a file? OR mmecli can 
write to a file?
Re: Running my h264 decoder with MME  
On Wed, 29 Apr 2009, Venkatarao Patnaik Balivada wrote:

>Hi,
>
>I got the core dump file. But I couldn't find gdb to run on the target.
>Should I run ntoarm-gdb on the host?  Instead of trying this, I want to
>understand the root cause of this.It might have crashed due to some bug in
>my decoder, I can debug that.

Debugging has to run on the host system and not on the target.

Using the debugger you should be able to see what calling function the
fault occured in which would help you indentify what should be looked at
first.

ntoarm-gdb <full path to binary file> <full path to corefile>

>
>My basic question is, why is MME iterating through each output format, if
>one of them (I need I420) is supported it should stop and connect, right?
>Is it that none of the formats are supported by gf_writer?
>
>It is difficult for me to debug video writer etc.
>
>I need to write I420 output, can I write to a file instead of gf-writer,
>through the mmecli utility? OR I need to write seperate app?

I'm not aware of the ability to do that, but maybe someone else might be
able to point at some suggestions.

>
>_______________________________________________
>General
>http://community.qnx.com/sf/go/post28305
>
>
Re: Running my h264 decoder with MME  
I think in this case the debugger is not required. Because it returned one error from gf_writer function, which caused 
the fault somewhere else. I want to debug only the first error. Only thing I don't understand is why is it iterating 
through different video formats if I420 is supoorted by gf_writer(), which is the first format.