Confirmed users
243
edits
Bobbychien (talk | contribs) (→Media Supported File Format: break line) |
|||
| (14 intermediate revisions by 3 users not shown) | |||
| Line 1: | Line 1: | ||
===Media Supported File Format=== | ===Media Supported File Format=== | ||
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 | For videos, usually if the thumbnail of a file cannot be generated, it cannot be shown in Gallery or Video APP. | ||
Related | 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> | |||
<OL> | |||
Files are categorized in 3 groups, pictures, music, and videos @ | <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 | ||
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: | |||
''*.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: | |||
''*.mp4; *.mpeg; *.mpg; *.ogv; *.ogx; *.webm; *.3gp; *.ogg; *.m4v;'' | ''*.mp4; *.mpeg; *.mpg; *.ogv; *.ogx; *.webm; *.3gp; *.ogg; *.m4v;'' | ||
<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. | ||
<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. | |||