Project Home
Project Home
Documents
Documents
Wiki
Wiki
Discussion Forums
Discussions
Project Information
Project Info
Forum Topic - couldn't attach the aac_decoder?: Page 1 of 2 (26 Items)
   
couldn't attach the aac_decoder?  
Hi all!
      I play the mp4 file,but it can not be attatched by the aac decoder which was compiled from the mme source code .I 
have  included this decoder in the path of lib\media\. The log is as follow.thanks!

io-media-generic/aoi: Fraunhofer MP3 Decoder:->got a flush.
io-media-generic/trackplayer: URL '/media/drive///isquintgrowing.mp4' matches pa
ttern '*.mp4'
io-media-generic/mmf: Setting long resource 'StreamerStickyError' (value='1')
io-media-generic/aoi:  fildes streamer setting the StreamerStickyError to 0
io-media-generic/trackplayer: Skipping video subgraph because there is no video
device specified.
io-media-generic/mmf: Configuring the queue for -1 bytes, lw = 0, hw = 0.
io-media-generic/aoi: MP4Parser: num_frames[1] = 574

io-media-generic/aoi: MP4Parser: Track duration '574' and 19133000 found on trac
kid 1

io-media-generic/aoi: MP4Parser: num_frames[2] = 594

io-media-generic/aoi: MP4Parser: Track duration '608256' and 19008000 found on t
rackid 2

io-media-generic/aoi: MP4Parser: track duration again: 608256 track: 2

io-media-generic/aoi: MP4Parser: audio track duration frame: 0 track: 2

io-media-generic/aoi: mp4_parser:  calculating relative track offsets for 2 trac
ks
io-media-generic/aoi: mp4_parser:  track 0 has 0 chunks.
io-media-generic/aoi: mp4_parser:  track 0 max chunks size = 0
io-media-generic/aoi: mp4_parser:  track 1 max chunks size = 2063
io-media-generic/aoi: mp4_parser:  track 1 has 76 chunks.
io-media-generic/aoi: mp4_parser:  max distance 0 -- min distance 608256.
io-media-generic/aoi: mp4_parser:  0 iters gave max distance between correspondi
ng chunks = 0.
io-media-generic/aoi: mp4_parser:  we need 3 32768 byte MRAs to cover this dista
nce.
io-media-generic/trackplayer: Loaded the mp4_parser filter based on the parser t
ag
io-media-generic/trackplayer: Skipping video subgraph because there is no device
 specified.
io-media-generic/mmf: Configuring the queue for 71940 bytes, lw = 14388, hw = 57
552.
io-media-generic/trackplayer: Couldn't load the libqaacd filter (based on the de
coder tag)
io-media-generic/trackplayer: Error 10004, 2, 4047:
io-media-generic/trackplayer: Couldn't create a linking filter for parsed stream

00:39:53 | ERRO | _attachinput                 |3334| Could not attach input (/m
edia/drive///isquintgrowing.mp4) to controlcontext default (fid=4).  errno=5
00:39:53 | ERRO | _play                        |2803| Could not attach file /med
ia/drive///isquintgrowing.mp4

Re: couldn't attach the aac_decoder?  
> io-media-generic/trackplayer: Couldn't load the libqaacd filter (based on the 
> decoder tag)

It seems that your configuration file is wrong.  "libqaacd" is not even a filter -- it's a codec library.  The filter 
that uses that library is "qnx_raac_decoder", and that's what the default configuration file specifies as the decoder 
for *.mp4 files.  You need both on the target, but the config file must specify the filter, not the codec.

The "Couldn't create a linking filter" message can be caused by all sorts of problems -- not only a missing filter or 
librariy, but also a corrupted file or an unsupported format.  To verify that you're not missing a filter or a library 
that that filter needs, temporarily add a "keepdll" element to your config file that specifies the filter as non-
optional, such as

  keepdll {
     name = "qnx_raac_decoder"
     optional = no
  }

This will make io-media fail to start up if some libraries are missing -- if io-media starts up successfully, you'll 
know that missing libraries are not the problem.  (The keepdll element will make io-media keep the filter and any 
associated libraries in memory instead of loading them and unloading as necessary.  If that's not what you want, remove 
it from your config file after you have fixed your problem.)
Re: couldn't attach the aac_decoder?  
You may find it helpful to look at the information in the MME Utilities Guide > io-media-generic > Configuring io-media 
 to use DLLs.
Re: couldn't attach the aac_decoder?  
Hi!
thanks for your reply,can you tell me the difference between codec and decoder? I think I only need decoder if I want to
 play a mp4 file.
thanks!
Re: couldn't attach the aac_decoder?  
> Hi!
> thanks for your reply,can you tell me the difference between codec and decoder
> ? I think I only need decoder if I want to play a mp4 file.
> thanks!

The main difference between a codec LIBRARY and a decoder FILTER is that the first is a library with its own API 
consisting of some functions and types specific to that library, whereas the second is a DLL that follows the rules of 
the QNX multimedia framerork (MMF) about how an MMF filter is expected to connnect to other filters, allocate data 
buffers and exchange them with other filters, and so on.  A decoder filter typically does not perform the actual 
decoding itself -- more often it uses a codec library to do that part of its job.  This kind of a filter can be seen as 
a wrapper for a codec library that encapsulates the codec's specific API in an MMF-compatible filter DLL.
Re: couldn't attach the aac_decoder?  
Hi Wojtek !
      thanks for your reply.Your mean is that:
    the codec lib provide the decoding function and complete the decoding job. the decoder filter is used to perform 
data exchange among the filters. is it right?but what is the relation of them?
      otherwise, playing ogg file only need parser filter and oggcodec.Sometimes ,it only need decoder filter and codec 
,such as playing mp4v files.but playing mp3 file need both the parser filter and decoer filter .I want to known the 
relation of them.The parser filter provide the API interface as follow.does the decoder filter provide the similar API.
thanks very much!

AOInterface_t mp4_parser_interfaces[] =

{
	{                "Name",                           1,         "mp4_parser" },
	{             "Version",                  MM_VERSION,                 NULL },
	{            "MimeInfo",          AOMIMEINFO_VERSION,           &mime_info },
	{     "AODeConstructor",     AODECONSTRUCTOR_VERSION,        &media_filter },
	{          "MediaInput",            MM_INPUT_VERSION,         &media_input },
	{         "MediaOutput",           MM_OUTPUT_VERSION,        &media_output },
	{          "MediaFlush",            MM_FLUSH_VERSION,         &media_flush },
	{  "MediaTimeConverter",   MM_TIME_CONVERTER_VERSION, &media_timeconverter },
	{         "MediaSeeker",           MM_SEEKER_VERSION,        &media_seeker },
	{      "MediaTrickPlay",        MM_TRICKPLAY_VERSION,     &media_trickplay },
	{      "MediaListMaker",        MM_LISTMAKER_VERSION,     &media_listmaker },
	{   "AOStreamInspector",   AOSTREAMINSPECTOR_VERSION,    &stream_inspector },
	{ "AOMimetypeInspector", AOMIMETYPEINSPECTOR_VERSION,      &mime_inspector },
	{    "AOResourceAccess",    AORESOURCEACCESS_VERSION,     &resource_access },
	{        "MediaControl",          MM_CONTROL_VERSION,       &media_control },
	{ "MediaEventProducer",     MM_EVENTPRODUCER_VERSION,&media_event_producer },
	{ "MediaSetInputPosition",MM_SETINPUT_POSITION_VERSION,&media_setinput_position },
  { "MediaMetadataParser",  MM_METADATA_PARSER_VERSION,           &md_parser },
	{ 0,0,0 }
};
Re: couldn't attach the aac_decoder?  
> Hi Wojtek !
>       thanks for your reply.Your mean is that:
>     the codec lib provide the decoding function and complete the decoding job.
>  the decoder filter is used to perform data exchange among the filters. is it 
> right?but what is the relation of them?

Yes.  The relation is that the decoder filter is linked with the codec library and makes calls into its functions.  The 
decoder receives data, one buffer at a time, from the previous filter (usually a parser), calls the codec's functions to
 decode the data into a new buffer, and sends that buffer to the next filter (usually a writer that passes the decoded 
data on to a speaker or a screen).

>       otherwise, playing ogg file only need parser filter and oggcodec.

Well no, because a parser doesn't usually talk to a codec.  A parser's job is to recognize the file format, extract 
metadata and other information such as the duration, sampling rate and so on, direct the reader filter to the right 
spots in the file when asked to seek to a time position or to fast-forward or rewind, and finally split the raw file 
data received from the reader into frames or packets or whatever units of encoded data the decoder expects to receive.  
(A decoder usually relies on the parser to find frame boundaries and flag when a frame has been split into two buffers.)


> Sometimes ,it only need decoder filter and codec ,such as playing mp4v files.

I am not aware of an MMF decoder filter capable of playing mp4v files without the help of a parser filter.

> but playing mp3 file need both the parser filter and decoer filter .I want to 
> known the relation of them.The parser filter provide the API interface as 
> follow.does the decoder filter provide the similar API.thanks very much!

About half of those interfaces must be provided by pretty much any MMF filter, including a decoder.  Most of the rest 
are specific to parsers, because in general only parsers need to worry about extracting metadata from files, convert 
time positions to file positions, or generate read requests appropriate for the current set trick-play speed.  A decoder
 doesn't need to care about most of those things -- it just receives complete encoded frames from the parser and decodes
 them one at a time.
 
> AOInterface_t mp4_parser_interfaces[] =
...


Re: couldn't attach the aac_decoder?  
Hi Wojtek !
     thanks for your particular reply.
    I konw the mp4 parser interface as follow.but in genererly,which interface is needed in the decoder filter.

AOInterface_t mp4_parser_interfaces[] =
{
	{                "Name",                           1,         "mp4_parser" },
	{             "Version",                  MM_VERSION,                 NULL },
	{            "MimeInfo",          AOMIMEINFO_VERSION,           &mime_info },
	{     "AODeConstructor",     AODECONSTRUCTOR_VERSION,        &media_filter },
	{          "MediaInput",            MM_INPUT_VERSION,         &media_input },
	{         "MediaOutput",           MM_OUTPUT_VERSION,        &media_output },
	{          "MediaFlush",            MM_FLUSH_VERSION,         &media_flush },
	{  "MediaTimeConverter",   MM_TIME_CONVERTER_VERSION, &media_timeconverter },
	{         "MediaSeeker",           MM_SEEKER_VERSION,        &media_seeker },
	{      "MediaTrickPlay",        MM_TRICKPLAY_VERSION,     &media_trickplay },
	{      "MediaListMaker",        MM_LISTMAKER_VERSION,     &media_listmaker },
	{   "AOStreamInspector",   AOSTREAMINSPECTOR_VERSION,    &stream_inspector },
	{ "AOMimetypeInspector", AOMIMETYPEINSPECTOR_VERSION,      &mime_inspector },
	{    "AOResourceAccess",    AORESOURCEACCESS_VERSION,     &resource_access },
	{        "MediaControl",          MM_CONTROL_VERSION,       &media_control },
	{ "MediaEventProducer",     MM_EVENTPRODUCER_VERSION,&media_event_producer },
	{ "MediaSetInputPosition",MM_SETINPUT_POSITION_VERSION,&media_setinput_position },
  { "MediaMetadataParser",  MM_METADATA_PARSER_VERSION,           &md_parser },
	{ 0,0,0 }
};

          Otherwise,How should I call the coder API in the decoder filter?such as the codec API function:inite_decoder()
,decoder_frame(),end_decoder().How can I add them to the AOInterface_t,is there a rule.thanks very much!
Re: couldn't attach the aac_decoder?  
Hi Wojtek !
      I have learned some about the media_input and media_output .and known some of the Aoiterface_t of parser filter 
and decoder filter from the doc.but I want to known where does the decoder()  function is called in the media_input API 
or media_output API. In a word ,which API function of the  Aointerface_t called the decoder function and complete  the 
decoding job,such as the API (setmediaoutput ,NextBuffer and so on).
      thanks very much!
Re: couldn't attach the aac_decoder?  
In a nutshell, a decoder filter's NextBuffer function (in its mediaOutput interface) will typically get some encoded 
data from the filter's input channel (by calling the NextBuffer function of the filter connected to the channel), and 
then acquire a new buffer, decode the the input data into that buffer by calling the appropriate function in the codec 
library, and finally return the decoded buffer (or, more accurately, an MRA containing references to the decoded data in
 the buffer).  Handling partial frames complicates this general idea a little, but that's a bigger topic.
Re: couldn't attach the aac_decoder?  
Hi Wojtek!
     thanks for your reply.
     I have a further understand to the filter with your help.Otherwise ,I write a h264_decoder filter by myself.but it 
can not be loaded when I play a mp4 file.So 
I  compile the mp4_parser from the mme source code again,it is libmp4_parse, but it also can not be loaded.I don't
known the reason.The log is as follow,thanks!

 io-media-generic/trackplayer: Created graph instance 'default'
io-media-generic: open( 'graphs/trackplayer/default' ): success
io-media-generic/trackplayer: URL '/media/drive///Jan.mp4' matches pattern '*.mp
4'
io-media-generic/mmf: Setting long resource 'StreamerStickyError' (value='1')
io-media-generic/aoi:  fildes streamer setting the StreamerStickyError to 0
io-media-generic/trackplayer: Skipping video subgraph because there is no video
device specified.
io-media-generic/mmf: Configuring the queue for -1 bytes, lw = 0, hw = 0.
io-media-generic/trackplayer: Couldn't load the libmp4_parser filter (based on t
he parser tag)
io-media-generic/aoi: MP4Parser: num_frames[1] = 3034

io-media-generic/aoi: MP4Parser: Track duration '3106816' and 70449000 found on
trackid 1

io-media-generic/aoi: MP4Parser: track duration again: 3106816 track: 1

io-media-generic/aoi: MP4Parser: audio track duration frame: 23220 track: 1

io-media-generic/aoi: MP4Parser: num_frames[2] = 2111

io-media-generic/aoi: MP4Parser: Track duration '211100' and 70437000 found on t
rackid 2

io-media-generic/aoi: MP4Parser: num_frames[3] = 1

io-media-generic/aoi: MP4Parser: Track duration '211100' and 70437000 found on t
rackid 3

io-media-generic/aoi: MP4Parser: num_frames[4] = 1

io-media-generic/aoi: MP4Parser: Track duration '211100' and 70437000 found on t
rackid 4

io-media-generic/aoi: MP4Parser: num_frames[5] = 2111

io-media-generic/aoi: MP4Parser: Track duration '6339340' and 70437000 found on
trackid 5

io-media-generic/aoi: MP4Parser: num_frames[6] = 759

io-media-generic/aoi: MP4Parser: Track duration '3106816' and 70449000 found on
trackid 6

io-media-generic/aoi: mp4_parser:  calculating relative track offsets for 6 trac
ks
io-media-generic/aoi: mp4_parser:  track 0 has 314 chunks.
io-media-generic/aoi: mp4_parser:  track 0 max chunks size = 2877
io-media-generic/aoi: mp4_parser:  track 1 max chunks size = 0
io-media-generic/aoi: mp4_parser:  track 2 max chunks size = 0
io-media-generic/aoi: mp4_parser:  track 3 max chunks size = 0
io-media-generic/aoi: mp4_parser:  track 4 max chunks size = 0
io-media-generic/aoi: mp4_parser:  track 5 max chunks size = 0
io-media-generic/aoi: mp4_parser:  track 1 has 0 chunks.
io-media-generic/aoi: mp4_parser:  track 1 has no offsets.
io-media-generic/aoi: mp4_parser:  track 2 has 0 chunks.
io-media-generic/aoi: mp4_parser:  track 2 has no offsets.
io-media-generic/aoi: mp4_parser:  track 3 has 0 chunks.
io-media-generic/aoi: mp4_parser:  track 3 has no offsets.
io-media-generic/aoi: mp4_parser:  track 4 has 0 chunks.
io-media-generic/aoi: mp4_parser:  track 4 has no offsets.
io-media-generic/aoi: mp4_parser:  track 5 has 0 chunks.
io-media-generic/aoi: mp4_parser:  track 5 has no offsets.
io-media-generic/aoi: mp4_parser:  max distance 0 -- min distance 3106816.
io-media-generic/aoi: mp4_parser:  0 iters gave max distance between correspondi
ng chunks = 2877.
io-media-generic/aoi: mp4_parser:  we need 3 32768 byte MRAs to cover this dista
nce.
io-media-generic/trackplayer: Skipping video subgraph because there is no device
 specified.
io-media-generic/mmf: Configuring the queue for 96000 bytes, lw = 19200, hw = 76
800.
io-media-generic/trackplayer: Couldn't load the libmmeh264_decoder filter (based
 on the decoder tag)
io-media-generic/trackplayer: Error 10004, 2, 4047:
io-media-generic/trackplayer: Couldn't create a linking filter for parsed stream

00:02:51 | ERRO | _attachinput                 |3334| Could not attach input (/m
edia/drive///Jan.mp4) to...
View Full Message
Re: couldn't attach the aac_decoder?  
The "Couldn't load the libmp4_parser filter" message is a little inaccurate -- what it really means that io-media 
couldn't attach an instance of the filter to the graph.  This can be caused by many possible things.  A few suggestions 
on how you can narrow it down:

* Is io-media able to load your DLL?  If you add it to a "keepdll" element in your io-media config file (without the "
optional=yes" line), io-media will want to load it at startup.  It the attempt fails, io-media will log a message to the
 system log and exit.

* If the DLL is loaded, are any of your interface functions being called?  You can add AO_LOG calls or simply printf to 
verify which functions get called.  In a parser, the first function that gets called is RateStream() (in the 
AOStreamInspector interface).  In a decoder it's RateFormat() (in the AOFormatInspector).  After either of those 
functions returns a positive rating, your Create() call should be called, and then the framework will try to acquire an 
input channel and connect it to the previous filter's outpit, by calling the various functions in your MediaInput 
interface.
Re: couldn't attach the aac_decoder?  
Hi Wojtek !
thanks for your reply. I have add some printing info(AO_log) in the API function.but it can not be printed.the printing 
info is less.the result is as follow.     I use
io-media-generic -D -S -c  /fs/etfs/kscope/io-media-generic.cfg
How can I get the particular printing info.thanks very much.



io-media-generic/trackplayer: Created graph instance 'default'
io-media-generic: open( 'graphs/trackplayer/default' ): success
io-media-generic/trackplayer: URL '/media/drive///Jan.mp4' matches pattern '*.mp
4'
io-media-generic/mmf: Setting long resource 'StreamerStickyError' (value='1')
io-media-generic/aoi:  fildes streamer setting the StreamerStickyError to 0
io-media-generic/trackplayer: Skipping video subgraph because there is no video
device specified.
io-media-generic/mmf: Configuring the queue for -1 bytes, lw = 0, hw = 0.
io-media-generic/trackplayer: Loaded the mp4_parser filter based on the parser t
ag
io-media-generic/trackplayer: Skipping video subgraph because there is no device
 specified.
io-media-generic/mmf: Configuring the queue for 96000 bytes, lw = 19200, hw = 76
800.
io-media-generic/trackplayer: Couldn't load the libmmeh264_decoder filter (based
 on the decoder tag)
io-media-generic/trackplayer: Error 10004, 2, 4047:
io-media-generic/trackplayer: Couldn't create a linking filter for parsed stream

00:07:23 | ERRO | _attachinput                 |3334| Could not attach input (/m
edia/drive///Jan.mp4) to controlcontext default (fid=2).  errno=5
00:07:23 | ERRO | _play                        |2803| Could not attach file /med
ia/drive///Jan.mp4
io-media-generic/trackplayer: Destroyed graph instance 'default
Re: couldn't attach the aac_decoder?  
Hi Wojtek !
    I want to print the detail info ,such as which API function is called.but it noly print the info that  the parser 
lib is loaded,nothing the detail.         
when I use 
io-media-genric -DD -S,the print log is as follow ,it come to a loop printing.Please give me some advice,thanks!


io-media-generic: open('graphs/trackplayer/default')
io-media-generic/trackplayer: Calling graph create function
io-media-generic/trackplayer: Created graph instance 'default'
io-media-generic: open( 'graphs/trackplayer/default' ): success
io-media-generic/trackplayer: Calling graph handler for dcmd GRAPHOPTIONS
io-media-generic/trackplayer: Dcmd GRAPHOPTIONS returning 0
io-media-generic/trackplayer: Calling graph handler for dcmd SETNOTIFICATION
io-media-generic/trackplayer: Dcmd SETNOTIFICATION returning 0
io-media-generic/trackplayer: Calling graph handler for dcmd SETTRANSITION
io-media-generic/trackplayer: Dcmd SETTRANSITION returning 0
io-media-generic/trackplayer: Calling graph handler for dcmd CAPABILITIES
io-media-generic/trackplayer: Dcmd CAPABILITIES returning 0
io-media-generic/trackplayer: Calling graph handler for dcmd ATTACHOUTPUT
io-media-generic/trackplayer: Dcmd ATTACHOUTPUT returning 0
io-media-generic/trackplayer: Calling graph handler for dcmd SETVOLUME
io-media-generic/trackplayer: Dcmd SETVOLUME returning 0
io-media-generic/trackplayer: Calling graph handler for dcmd SETSPEED
io-media-generic/trackplayer: Dcmd SETSPEED returning 0
io-media-generic/trackplayer: Calling graph handler for dcmd GETSTATUS
io-media-generic/trackplayer: Dcmd GETSTATUS returning 0
io-media-generic/trackplayer: Calling graph handler for dcmd SETNOTIFICATION
io-media-generic/trackplayer: Dcmd SETNOTIFICATION returning 0
io-media-generic/trackplayer: Calling graph handler for dcmd ATTACHINPUT
io-media-generic/trackplayer: URL '/media/drive///2009-02-12-vystava-vitejte_v_k
apitalismu-360p.mp4' matches pattern '*.mp4'
io-media-generic/trackplayer: Tag 'format' has 0 kids
io-media-generic/mmf: Setting long resource 'StreamerStickyError' (value='1')
io-media-generic/aoi:  fildes streamer setting the StreamerStickyError to 0
io-media-generic/trackplayer: Skipping video subgraph because there is no video
device specified.
io-media-generic/mmf: Configuring the queue for -1 bytes, lw = 0, hw = 0.
io-media-generic/trackplayer: Loaded the mp4_parser filter based on the parser t
ag
io-media-generic/trackplayer: Skipping video subgraph because there is no device
 specified.
io-media-generic/trackplayer: No video stream found.
io-media-generic/trackplayer: Found audio stream.
io-media-generic/mmf: Configuring the queue for 190140 bytes, lw = 38028, hw = 1
52112.
io-media-generic/trackplayer: Finding decoder for stream 0.
io-media-generic/trackplayer: Couldn't load the h264_decoder filter (based on th
e decoder tag)
io-media-generic/trackplayer: Hint mode allows a filter search for this input
io-media-generic/trackplayer: Error 10004, 2, 4047:
io-media-generic/trackplayer: Couldn't create a linking filter for parsed stream

io-media-generic/trackplayer: Dcmd ATTACHINPUT returning 5
io-media-generic/trackplayer: Calling graph handler for dcmd GETERROR
io-media-generic/trackplayer: Dcmd GETERROR returning 0
00:21:37 | ERRO | _attachinput                 |3334| Could not attach input (/m
edia/drive///2009-02-12-vystava-vitejte_v_kapitalismu-360p.mp4) to controlcontex
t default (fid=3).  errno=5
00:21:38 | ERRO | _play                        |2803| Could not attach file /med
ia/drive///2009-02-12-vystava-vitejte_v_kapitalismu-360p.mp4
io-media-generic/trackplayer: Calling graph handler for dcmd STOP
io-media-generic/trackplayer: Dcmd STOP returning 0
io-media-generic/trackplayer: Calling graph handler for dcmd GETSTATUS
io-media-generic/trackplayer: Dcmd GETSTATUS returning 0
io-media-generic/trackplayer: Calling graph handler for dcmd STOP
io-media-generic/trackplayer: Dcmd STOP returning...
View Full Message
Re: couldn't attach the aac_decoder?  
Hi Kailen,

The trick with AO_LOG is that when you compile with NDEBUG defined, the <aoi_errlog.h> header defines AO_LOGLVL to be 
AO_LOG_INFO, which causes any DEBUG1 and DEBUG2 messages to be completely #ifdefed out from the binary.  Running io-
media with two -D's does not bring them back.  If you want DEBUG messages even when you compile with no debug, #define 
AO_LOGLVL yourself before including <aoi.h>:

  #define AO_LOGLVL AO_LOG_DEBUG2
  #include <aoi.h>

What are you using to cause a message when the lib is loaded?  Does it actually get loaded successfully?  Have you by 
any chance tried the keepdll trick I recommended?
Re: couldn't attach the aac_decoder?  
Hi Wojtek!
       thanks for your reply.
      I use io-media-generic -DD -S,as a result ,it come into a loop printing ,please see my log.
      In the mp4_parser source code ,I include <aoi_errlog.h> ,and I use 
AO_LOG(AO_LOG_INFO,"enter the FormRate API") to get the printing info.as a result ,nothing is printed.
      Otherwise,the libh264_decoder.so can not be loaded when I use your recommand method by delete option=yes in  the 
keepdll.
     thanks.
Re: couldn't attach the aac_decoder?  
>       Otherwise,the libh264_decoder.so can not be loaded when I use your 
> recommand method by delete option=yes in  the keepdll.

Well if it cannot be loaded than that explains why you're not seeing any of your messages.

If you export an environment variable named DL_DEBUG before starting io-media, the dynamic loader will print out a lot 
of information about every shared library that it attempts to load.  Hopefully this will tell you why it cannot be 
loaded.  (Do it with the keepdll option that causes it to exit -- otherwise it'll carry on and flood you with lots and 
lots of irrelevant debug info.)
Re: couldn't attach the aac_decoder?  
Hi wojtek!
     First, I compile mp4_parser project with NDEBUG defined in the project ,then I
add the log  in the sniffStream() function as follow(because this function is called firstly).
           static int32_t SniffStream(AOIStream_t *sobj)
{
	AO_LOG( AO_LOG_DEBUG1, "I entered the function SniffStream ");
---------
}

         as a result ,noting is printed,I have no idea.the log is as follow,thanks!




io-media-generic: open( 'graphs/trackplayer/default' ): success
io-media-generic/trackplayer: URL '/media/drive///Numb.mp3' matches pattern '*.m
p[a123]'
io-media-generic/mmf: Setting long resource 'StreamerStickyError' (value='1')
io-media-generic/aoi:  fildes streamer setting the StreamerStickyError to 0
io-media-generic/trackplayer: Skipping video subgraph because there is no video
device specified.
io-media-generic/mmf: Configuring the queue for -1 bytes, lw = 0, hw = 0.
io-media-generic/trackplayer: Loaded the mpega_parser filter based on the parser
 tag
io-media-generic/trackplayer: Skipping video subgraph because there is no device
 specified.
io-media-generic/mmf: Configuring the queue for 72000 bytes, lw = 14400, hw = 57
600.
io-media-generic/trackplayer: Couldn't load the xing_mpega_decoder filter (based
 on the decoder tag)
io-media-generic/mmf: Configuring the queue for 64000 bytes, lw = 6400, hw = 576
00.
io-media-generic/aoi: Fraunhofer MP3 Decoder:->QueryOutputFormats 'AWAR', 32000x
16 (1 x 230400bytes)
io-media-generic/aoi: audio_writer using output device: '/dev/snd/pcmC0D2p'
io-media-generic/aoi: audio_writer asking for Signed 16-bit Little Endian, 1..2x
2560B frags, 32000Hz, bps=2, 1ch
io-media-generic/aoi: audio_writer settings:  Signed 16-bit Little Endian, 3x118
88B frags, 32000Hz, bps=2, 1ch, Q time 557ms
io-media-generic/aoi: audio_writer PGA_StreamerCreate() adjusting chunk_size fro
m 2560bytes to 2560bytes
io-media-generic/aoi: audio_writer using mixer device '/dev/snd/mixerC0D0'
io-media-generic/aoi: AudioWriterTask() adjusting chunk_size from 2560bytes to 2
560bytes
io-media-generic/aoi: Fraunhofer MP3 Decoder:->SetOutputFormat 'AWAR', 32000x16b
its
io-media-generic/trackplayer: The audio_writer filter accepted input from queue_
filter
io-media-generic/trackplayer: Skipping subgraph 1 because there is no device spe
cified.
io-media-generic/mmf: Setting long resource 'MM_IPP_H264_DECODER_NUM_THREADS' (v
alue='3')
io-media-generic/mmf: Setting long resource 'StreamerStickyError' (value='0')
io-media-generic/aoi:  fildes streamer setting the StreamerStickyError to 0
HID Class/init - No such file or directory
error starting USB HID class driver
Re: couldn't attach the aac_decoder?  
>      First, I compile mp4_parser project with NDEBUG defined in the project ,
> then I
> add the log  in the sniffStream() function as follow(because this function is 
> called firstly).
...
> 
>          as a result ,noting is printed,I have no idea.the log is as follow,

Could that be because you were playing an MP3 file and io-media knew that the correct parser was mpega_parser and not 
mp4_parser?

> io-media-generic/trackplayer: Loaded the mpega_parser filter based on the 
> parser
>  tag

Re: couldn't attach the aac_decoder?  
Hi wojtek!
    I am sorry ,I mistake the log .The playing file should be  mp4.
    I use NDEBUG defined to complie the mp4_parser .and in the aoi_errlog.h,I can see the  #define AO_LOGLVL AO_LOG_INFO
  is available.but  the libmp4_parser.so  can not be loaded,there are not any info printed which I add by AO_LOG(); the 
log is as follow.please give me direction, thanks!


 io-media-generic/trackplayer: Created graph instance 'default'
io-media-generic: open( 'graphs/trackplayer/default' ): success
io-media-generic/trackplayer: URL '/media/drive///Jan.mp4' matches pattern '*.mp
4'
io-media-generic/mmf: Setting long resource 'StreamerStickyError' (value='1')
io-media-generic/aoi:  fildes streamer setting the StreamerStickyError to 0
io-media-generic/trackplayer: Skipping video subgraph because there is no video
device specified.
io-media-generic/mmf: Configuring the queue for -1 bytes, lw = 0, hw = 0.
io-media-generic/trackplayer: Couldn't load the libmp4_parser filter (based on t
he parser tag)
io-media-generic/trackplayer: Error 10004, 2, 4047:
io-media-generic/trackplayer: Couldn't create a linking filter for raw stream
00:14:13 | ERRO | _attachinput                 |3334| Could not attach input (/m
edia/drive///Jan.mp4) to controlcontext default (fid=2).  errno=5
00:14:13 | ERRO | _play                        |2803| Could not attach file /med
ia/drive///Jan.mp4
RE: couldn't attach the aac_decoder?  
Libmp4_parser is not a filter.  The filter for the mp4 parser is
mp4_parser.so 

-----Original Message-----
From: Kailen High [mailto:community-noreply@qnx.com] 
Sent: June 2, 2010 4:26 AM
To: general-multimedia
Subject: Re: couldn't attach the aac_decoder?

Hi wojtek!
    I am sorry ,I mistake the log .The playing file should be  mp4.
    I use NDEBUG defined to complie the mp4_parser .and in the
aoi_errlog.h,I can see the  #define AO_LOGLVL AO_LOG_INFO  is
available.but  the libmp4_parser.so  can not be loaded,there are not any
info printed which I add by AO_LOG(); the log is as follow.please give
me direction, thanks!


 io-media-generic/trackplayer: Created graph instance 'default'
io-media-generic: open( 'graphs/trackplayer/default' ): success
io-media-generic/trackplayer: URL '/media/drive///Jan.mp4' matches
pattern '*.mp 4'
io-media-generic/mmf: Setting long resource 'StreamerStickyError'
(value='1')
io-media-generic/aoi:  fildes streamer setting the StreamerStickyError
to 0
io-media-generic/trackplayer: Skipping video subgraph because there is
no video device specified.
io-media-generic/mmf: Configuring the queue for -1 bytes, lw = 0, hw =
0.
io-media-generic/trackplayer: Couldn't load the libmp4_parser filter
(based on t he parser tag)
io-media-generic/trackplayer: Error 10004, 2, 4047:
io-media-generic/trackplayer: Couldn't create a linking filter for raw
stream
00:14:13 | ERRO | _attachinput                 |3334| Could not attach
input (/m
edia/drive///Jan.mp4) to controlcontext default (fid=2).  errno=5
00:14:13 | ERRO | _play                        |2803| Could not attach
file /med
ia/drive///Jan.mp4



_______________________________________________

General
http://community.qnx.com/sf/go/post55914
Re: RE: couldn't attach the aac_decoder?  
Hi Adrian!
       I build a dynamic lib project named mp4_parser ,the result of compiling is libmp4_parser.so.I have modify the io-
media-generic.cfg.(parse=libmp4_parser)
      Otherwise,I build the mp4_parser project by the mme source code.thanks!
Re: couldn't attach the aac_decoder?  
Hi wojtek!
      Secondly, I add the  DL_DEBUG=1 before the io-media,but there are noting about the libmp4_parser loaded  info.
Otherwise , the aac ,wav and so on can be loaded.the log as follow,thanks very much!
    
       io-media-generic: open( 'graphs/trackplayer/mme_metadata' ): success
dlopen("/fs/etfs/kscope/armle/lib/dll/mmedia/upnp_streamer.so",512)
load_object: attempt load of /fs/etfs/kscope/armle/lib/dll/mmedia/upnp_streamer.
so
load_elf32: loaded lib at addr 7801a000(text) 7801b6c8(data)
dlsym(0x169000,_btext)=0x7801a464
Library loaded; type 'add-sym upnp_streamer.so 0x7801a464' in gdb to load symbol
s
dlsym(0x169000,interfaces)=0x7801b7c8
dlopen("/fs/etfs/kscope/armle/lib/dll/mmedia/media_streamer.so",512)
load_object: attempt load of /fs/etfs/kscope/armle/lib/dll/mmedia/media_streamer
.so
load_elf32: loaded lib at addr 7801a000(text) 7801cd5c(data)
dlsym(0x169000,_btext)=NULL
Library loaded; type 'add-sym media_streamer.so 0x0' in gdb to load symbols
dlsym(0x169000,interfaces)=0x7801cd90
dlopen("/fs/etfs/kscope/armle/lib/dll/mmedia/wma9_parser.so",512)
load_object: attempt load of /fs/etfs/kscope/armle/lib/dll/mmedia/wma9_parser.so

load_elf32: loaded lib at addr 78060000(text) 7809c880(data)
dlsym(0x169000,_btext)=NULL
Library loaded; type 'add-sym wma9_parser.so 0x0' in gdb to load symbols
load_object: attempt load of libmmfilter.so.1
load_elf32: loaded lib at addr 7801a000(text) 7801d664(data)
load_object: attempt load of libm.so.2
load_elf32: loaded lib at addr 780a0000(text) 780ce560(data)
dlsym(0x169000,interfaces)=0x7809c9e0
dlopen("/fs/etfs/kscope/armle/lib/dll/mmedia/wav_parser.so",512)
load_object: attempt load of /fs/etfs/kscope/armle/lib/dll/mmedia/wav_parser.so
load_elf32: loaded lib at addr 78060000(text) 7806d130(data)
dlsym(0x169000,_btext)=NULL
Library loaded; type 'add-sym wav_parser.so 0x0' in gdb to load symbols
load_object: attempt load of libmmfilter.so.1
load_elf32: loaded lib at addr 7801a000(text) 7801d664(data)
dlsym(0x169000,interfaces)=0x7806d52c
dlopen("/fs/etfs/kscope/armle/lib/dll/mmedia/mpega_parser.so",512)
load_object: attempt load of /fs/etfs/kscope/armle/lib/dll/mmedia/mpega_parser.s
o
load_elf32: loaded lib at addr 78060000(text) 7806e040(data)
dlsym(0x169000,_btext)=NULL
Library loaded; type 'add-sym mpega_parser.so 0x0' in gdb to load symbols
load_object: attempt load of libmmfilter.so.1
load_elf32: loaded lib at addr 7801a000(text) 7801d664(data)
dlsym(0x169000,interfaces)=0x7806e490
dlopen("/fs/etfs/kscope/armle/lib/dll/mmedia/aac_parser.so",512)
load_object: attempt load of /fs/etfs/kscope/armle/lib/dll/mmedia/aac_parser.so
load_elf32: loaded lib at addr 78060000(text) 7806f7fc(data)
dlsym(0x169000,_btext)=NULL
Library loaded; type 'add-sym aac_parser.so 0x0' in gdb to load symbols
load_object: attempt load of libmmfilter.so.1
load_elf32: loaded lib at addr 7801a000(text) 7801d664(data)
dlsym(0x169000,interfaces)=0x7806fc38
Re: couldn't attach the aac_decoder?  
>       Secondly, I add the  DL_DEBUG=1 before the io-media,but there are noting
>  about the libmp4_parser loaded  info.Otherwise , the aac ,wav and so on can 
> be loaded.the log as follow,thanks very much!

The interesting part would be at the very beginning, while io-media was still doing its initialization (and before and 
open() calls had a chance to be received, let alone succed).  Also, first I'd try the keepdll option I mentioned eariler
, to verify that the DLL is indeed failing to load.  If it loads and the problem is elsewhere, sifting through the 
DL_DEBUG output is a waste of time.
     
>        io-media-generic: open( 'graphs/trackplayer/mme_metadata' ): success

Re: couldn't attach the aac_decoder?  
Hi wojtek!
      I compare my mp4_parser.so binary with the standard mp4_parser.so.I find that the standard mp4_parser.so contain 
many tag,but my mp4_parser have no one.the tag is as follow:

0001eca0 l     O .text	00000001 MP4ODescrTag
0001eca1 l     O .text	00000001 MP4IODescrTag
0001eca2 l     O .text	00000001 MP4ESDescrTag
0001eca3 l     O .text	00000001 MP4DecConfigDescrTag
0001eca4 l     O .text	00000001 MP4DecSpecificDescrTag
0001eca5 l     O .text	00000001 MP4SLConfigDescrTag
0001eca6 l     O .text	00000001 MP4ContentIdDescrTag
0001eca7 l     O .text	00000001 MP4SupplContentIdDescrTag
0001eca8 l     O .text	00000001 MP4IPIPtrDescrTag
0001eca9 l     O .text	00000001 MP4IPMPPtrDescrTag
0001ecaa l     O .text	00000001 MP4IPMPDescrTag
0001ecab l     O .text	00000001 MP4RegistrationDescrTag
0001ecac l     O .text	00000001 MP4ESIDIncDescrTag
0001ecad l     O .text	00000001 MP4ESIDRefDescrTag
0001ecae l     O .text	00000001 MP4FileIODescrTag


      can you tell me the function of Tag.Does my mp4_parser lost something to 
compile? thanks!