TPESystem/Media/MediaSupportFileFormat: Difference between revisions

 
(14 intermediate revisions by 3 users not shown)
Line 1: Line 1:
===Media Supported File Format===
===Media Supported File Format===
Some tips/clues shown below can help you know why the newly-added file is not seen or cannot be played.
These tips/clues are shown below can help you know why the newly-added file is not seen or cannot be played.
For videos, usually if the thumbnail of a file cannot be generated. It cannot be shown in Gallery or Video APP.
For videos, usually if the thumbnail of a file cannot be generated, it cannot be shown in Gallery or Video APP.
Related bugs: {{bug|942078}}
Related bugis: {{bug|942078}} <br>
 
FxOS Media Type: [[FirefoxOS/MultimediaPlatform/MediaFormats|Media Formats]] <br>
QA Test Plan: [[B2G/QA/WebAPI Test Plan/Media Playback | Media Playback Test Plan]] <br>
 


* ''' File Type Check'''  
<OL>
Files are categorized in 3 groups, pictures, music, and videos @gecko/toolkit/content/devicestorage.properties.
<LI>''' Media File Type Check'''<br>
You need to check if your file extension is in the following list. Otherwise it will be not recognized as media files.
Files are categorized in 3 groups, pictures, music, and videos @http://dxr.mozilla.org/mozilla-central/source/toolkit/content/devicestorage.properties  
** Pictures:
You need to check if your file extension is in the following list. Otherwise it will be not recognized as media files. <br>
 
* Pictures:
''*.jpe; *.jpg; *.jpeg; *.gif; *.png; *.bmp''
''*.jpe; *.jpg; *.jpeg; *.gif; *.png; *.bmp''
** Music:
 
* Music:
''*.mp3; *.ogg; *.m4a; *.m4b; *.m4p; *.m4r; *.3gp; *.mp4; *.m3u; *.pls; *.opus; *.amr''
''*.mp3; *.ogg; *.m4a; *.m4b; *.m4p; *.m4r; *.3gp; *.mp4; *.m3u; *.pls; *.opus; *.amr''
** Videos:
 
* Videos:
''*.mp4; *.mpeg; *.mpg; *.ogv; *.ogx; *.webm; *.3gp; *.ogg; *.m4v;''
''*.mp4; *.mpeg; *.mpg; *.ogv; *.ogx; *.webm; *.3gp; *.ogg; *.m4v;''
*'''MIME Type Get'''
 
<LI>'''MIME Type Get''' <br>
For Gaia, <br>
For Gaia, <br>
Before getting metadata and thumbnail then, canPlayType is used to check if it is valid video file by passing MIME type to gecko to check. <br>  
Before getting metadata and thumbnail then, canPlayType is used to check if it is valid video file by passing MIME type to gecko to check. <br>  
Line 23: Line 33:
This MIME type is obtained from extension list extraMimeEntries @http://dxr.mozilla.org/mozilla-central/source/uriloader/exthandler/nsExternalHelperAppService.cpp#483 <br>  
This MIME type is obtained from extension list extraMimeEntries @http://dxr.mozilla.org/mozilla-central/source/uriloader/exthandler/nsExternalHelperAppService.cpp#483 <br>  
So if your file extension is not in the list. You will get a empty MIME.  
So if your file extension is not in the list. You will get a empty MIME.  
*'''Sniff'''  
<LI>'''Sniff'''<br>
If you file passes those two checks explained above, it doesn't mean thumbnail can be generated or can be played successfully. Those checks only try to find a match in the mapping list of MIME and file extension. <br>  
If you file passes those two checks explained above, it doesn't mean thumbnail can be generated or can be played successfully. Those checks only try to find a match in the mapping list of MIME and file extension. <br>  
In Gecko, DataSource(frameworks/base/media/libstagefright/DataSource.cpp sniff()) will sniff the files and try to find the corresponding extractor. You can find how many and which formats supported in RegisterDefaultSniffers().
In Gecko, DataSource(frameworks/base/media/libstagefright/DataSource.cpp sniff()) will sniff the files and try to find the corresponding extractor. You can find how many and which formats supported in RegisterDefaultSniffers().
<LI>'''MIME mapper in Gaia'''<br>
There is a mime and file extension mapping list in Gaia(http://mxr.mozilla.org/gaia/source/shared/js/mime_mapper.js). Currently this is used for those media files not in storage, like mail attachment. It can be used to get file extension by passing MIME type.
</OL> <br>
Basically B2G does "File Type Check" first for newly-added files, and then get the MIME type via a hardcoded file extension- mime type mapped list from nsExternalHelperAppService.cpp to pass it to a decoder created in DecoderTraits.cpp.
Confirmed users
243

edits