Jump to ID:
Multimedia

Project Home

Documents

Discussions

Wiki

Project Info
Forum Topic - Question about the return value if the connected iPod doesn't suport the certain Aviage API function calls: (6 Items)
   
 
 
Question about the return value if the connected iPod doesn't suport the certain Aviage API function calls  
Hi,

Just wonder what kind of error message will the Aviage API function return if the connected iPod doesn't support the 
certain function due to the lingo version is not up to date.

For example, for an iAP command GetArtworkFomats, it requires the connected iPod supports  extended interface(i.e., 
Lingo 0x4) version 1.10 and above. However, if the iPod firmware is not up to date, and only support extended interface 
version 1.09 for instance, what will happen if clients call related Avaige API functions to get the album arts? 

And does the iPod driver will try using other iAP commands to attain the same functionality if the certain command is 
not supported by the connected iPod due to the lingo compatibility problem?

BTW, seems I couldn't found any info about this in any Aviage Multmedia Suite document. I thought It could be idea if 
there is a table supplied by QNX which indicates the required lingo version associated with the related Aviage API 
functions like the example below, thanks.

1)For mme_metadata_getinfo_current(), the related iAP command is GetArtworkFormats which requires extended interface 
version 1.10 and above.

2)For mme_metadata_image_load(), the related iAP command is GetTrackArtworkData which requires extended interface 
version 1.10 and above.

Regards,
Chris
RE: Question about the return value if the connected iPod doesn't suport the certain Aviage API function calls  
I don't have the code in front of me at the moment, but the usual error for this sort of case would be ENOTSUP.

That said, you will probably not see an error with mme_metadata_getinfo_current(); this function will likely just return
 the metadata without any images specified.  Using mme_metadata_image_load() would then be invalid because there would 
be no image index for the associated metadata that is returned.  (For this case the error may be EINVAL, but I'd have to
 check to say for sure.)

-- 
Ryan J. Allen
QNX Software Systems




-----Original Message-----
From: Chris Li [mailto:community-noreply@qnx.com]
Sent: Mon 2009-06-15 02:56
To: general-multimedia
Subject: Question about the return value if the connected iPod doesn't suport the certain Aviage API function calls
 
Hi,

Just wonder what kind of error message will the Aviage API function return if the connected iPod doesn't support the 
certain function due to the lingo version is not up to date.

For example, for an iAP command GetArtworkFomats, it requires the connected iPod supports  extended interface(i.e., 
Lingo 0x4) version 1.10 and above. However, if the iPod firmware is not up to date, and only support extended interface 
version 1.09 for instance, what will happen if clients call related Avaige API functions to get the album arts? 

And does the iPod driver will try using other iAP commands to attain the same functionality if the certain command is 
not supported by the connected iPod due to the lingo compatibility problem?

BTW, seems I couldn't found any info about this in any Aviage Multmedia Suite document. I thought It could be idea if 
there is a table supplied by QNX which indicates the required lingo version associated with the related Aviage API 
functions like the example below, thanks.

1)For mme_metadata_getinfo_current(), the related iAP command is GetArtworkFormats which requires extended interface 
version 1.10 and above.

2)For mme_metadata_image_load(), the related iAP command is GetTrackArtworkData which requires extended interface 
version 1.10 and above.

Regards,
Chris

_______________________________________________
General
http://community.qnx.com/sf/go/post31698


Attachment: Text winmail.dat 3.85 KB
Re: RE: Question about the return value if the connected iPod doesn't suport the certain Aviage API function calls  
> I don't have the code in front of me at the moment, but the usual error for 
> this sort of case would be ENOTSUP.
> 
> That said, you will probably not see an error with 
> mme_metadata_getinfo_current(); this function will likely just return the 
> metadata without any images specified.  Using mme_metadata_image_load() would 
> then be invalid because there would be no image index for the associated 
> metadata that is returned.  (For this case the error may be EINVAL, but I'd 
> have to check to say for sure.)

Ryan is correct. The iPod driver will return ENOTSUP to most calls which are unable to complete due to firmwire versions
. Some examples are cover art, getting composer information, HD Radio tagging, etc.. 

But when called through the MME, these errnos may be lost in some cases. For example, when it comes to metadata (i.e. 
mme_metadata_getinfo_currnet()) there may be more than one provide of the information, so the MME queries a series of 
plugins to try and retrieve the data. Just because the mediafs (i.e. iPod) plugin can't provide any artwork, it doesn't 
mean some other plugin (external DB like Gracenote, or some kind of online lookup) can't provide cover art based on the 
album info, so the iPod errno will be lost in this process.

Regards,
Gilles
Re: RE: Question about the return value if the connected iPod doesn't suport the certain Aviage API function calls  
That's all right, thanks Ryan and Gilles for the info.

It seems under folder mountpoint/.FS_info., there is a file named info.xml which can be used to get the supported lingo 
version of the connected iPod. It will be helpful to get a basic idea of which iAP command or even which Avaige API 
function will not be supported on certain features like get album artwork, set audiobook speed or splash image on iPod 
screen because they all have supported lingo limitation as follows:

Get/set audiobook speed requires lingo 4 version 1.06 and above.
Display image on iPod screen requires lingo 4 version 1.09 and above.
Get album art functionality requires lingo 4 version 1.10 and above. 

Instead of opening the info.xml and get the required information directly, just wonder whether there is a way of using a
 certain API function to get the actual info inside (It is a ideal way according to the software architecture 
requirement which prefer everything has an API) just like mme_device_get_config() does, thanks.

Regards,
Chris
Re: RE: Question about the return value if the connected iPod doesn't suport the certain Aviage API function calls  
>  will be helpful to get a basic idea of which iAP command or even which Avaige
>  API function will not be supported on certain features like get album artwork
> , set audiobook speed or splash image on iPod screen because they all have 
> supported lingo limitation as follows:
> 
> Get/set audiobook speed requires lingo 4 version 1.06 and above.
> Display image on iPod screen requires lingo 4 version 1.09 and above.
> Get album art functionality requires lingo 4 version 1.10 and above. 

This is a good idea. I will create an PR to document the feature set.

> just wonder whether there is a way of using a certain API function to get the 
> actual info inside (It is a ideal way according to the software architecture 
> requirement which prefer everything has an API) just like 
> mme_device_get_config() does, thanks.

I agree, we should probably add this information to mme_device_get_config(). I put that as part of the PR (number 69319 
in case you are curious)

Regards,
Gilles
Re: RE: Question about the return value if the connected iPod doesn't suport the certain Aviage API function calls  
Hi Gilles,

> I agree, we should probably add this information to mme_device_get_config(). I
>  put that as part of the PR (number 69319 in case you are curious)

Yes, we really need this feature, hopefully it can been seen in next Aviage release, thanks.