<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://www.w3.org/Bugs/Public/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4"
          urlbase="https://www.w3.org/Bugs/Public/"
          
          maintainer="sysbot+bugzilla@w3.org"
>

    <bug>
          <bug_id>24220</bug_id>
          
          <creation_ts>2014-01-07 14:33:37 +0000</creation_ts>
          <short_desc>mp3 without id3 header cannot be sniffed reliably using only 512 bytes</short_desc>
          <delta_ts>2016-03-02 16:42:36 +0000</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WHATWG</product>
          <component>MIME</component>
          <version>unspecified</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>MOVED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>normal</bug_severity>
          <target_milestone>Unsorted</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="paul@paul.cx">padenot</reporter>
          <assigned_to name="Gordon P. Hemsley">gphemsley</assigned_to>
          <cc>annevk</cc>
    
    <cc>giles</cc>
    
    <cc>mike</cc>
          
          <qa_contact>sideshowbarker+mimespec</qa_contact>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>98075</commentid>
    <comment_count>0</comment_count>
      <attachid>1421</attachid>
    <who name="paul@paul.cx">padenot</who>
    <bug_when>2014-01-07 14:33:37 +0000</bug_when>
    <thetext>Created attachment 1421
Tentative algorithm to sniff mp3 without id3

While trying to find an algorithm to sniff mp3 without ID3 headers reliably for Gecko, we found that it seems impossible to sniff such bit stream reliably without going past the 512 bytes limit mandated by the spec.

The technique we use is to check if there is an mp3 sync pattern at the beginning of the bit stream, and then determine the location of the next sync pattern, using values such as the bit rate, the sample rate, etc. found in the header of the first packet, by parsing the mp3 bit stream.

Then, seeking to the next sync pattern and checking if there is another mp3 sync pattern at the expected offset tell us if we are effectively sniffing an mp3 stream.

This works very reliably, but there is one major problem: the second sync pattern is often past the 512 bytes limit, especially with high bit rate/sample rate media files. The second sync pattern can be at a max offset of 1441 bytes (320kbps * 144 / 32kHz + 1 padding byte), and the sync pattern itself is 4 bytes long, so minimum 1445 bytes are needed.

Attached is a (draft) algorithm one can implement to sniff an mp3 bit stream without id3 header.

[1]: the complete implementation: http://dxr.mozilla.org/mozilla-central/source/toolkit/components/mediasniffer/mp3sniff.c</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>125329</commentid>
    <comment_count>1</comment_count>
    <who name="Anne">annevk</who>
    <bug_when>2016-03-02 16:42:36 +0000</bug_when>
    <thetext>https://github.com/whatwg/mimesniff/pull/4</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>1421</attachid>
            <date>2014-01-07 14:33:37 +0000</date>
            <delta_ts>2014-01-07 14:33:37 +0000</delta_ts>
            <desc>Tentative algorithm to sniff mp3 without id3</desc>
            <filename>mp3-sniff.md</filename>
            <type>text/x-markdown</type>
            <size>3252</size>
            <attacher name="paul@paul.cx">padenot</attacher>
            
              <data encoding="base64">IyBtcDMgd2l0aG91dCBpZDMgaGVhZGVyCi0gTGV0IHNlcXVlbmNlIGJlIHRoZSByZXNvdXJjZSBo
ZWFkZXIsIHdoZXJlIHNlcXVlbmNlW3NdIGlzIGJ5dGUgcyBpbiBzZXF1ZW5jZSBhbmQgc2VxdWVu
Y2VbMF0gaXMgdGhlIGZpcnN0IGJ5dGUgaW4gc2VxdWVuY2UuCi0gTGV0IGxlbmd0aCBiZSB0aGUg
bnVtYmVyIG9mIGJ5dGVzIGluIHNlcXVlbmNlLgotIEluaXRpYWxpemUgcyB0byAwLgotIElmIHRo
ZSByZXN1bHQgb2YgdGhlIG9wZXJhdGlvbiAibWF0Y2ggbXAzIGhlYWRlciIgaXMgZmFsc2UsIHJl
dHVybiB1bmRlZmluZWQKLSBFeGVjdXRlIHRoZSBvcGVyYXRpb24gIm1wMyBwYXJzZSIuCi0gTGV0
IGBza2lwcGVkLWJ5dGVzYCB0aGUgcmV0dXJuIHZhbHVlIG9mIHRoZSBleGVjdXRpb24gb2YgIm1w
MyBmcmFtZXNpemUiCi0gaWYgYHNraXBwZWQtYnl0ZXNgIGlzIGxlc3MgdGhhbiA0LCBvciBgc2tp
cHBlZC1ieXRlc2AgaXMgZ3JlYXRlciB0aGFuIGBzIC0KICBsZW5ndGhgLCByZXR1cm4gdW5kZWZp
bmVkLgotIEluY3JlbWVudCBzIGJ5IGBza2lwcGVkLWJ5dGVzYC4KLSBJZiB0aCByZXN1bHQgb2Yg
dGhlIG9wZXJhdGlvbiAibWF0Y2ggbXAzIGhlYWRlciIgb3BlcmF0aW9uIGlzIGZhbHNlLCByZXR1
cm4KICB1bmRlZmluZWQsIGVsc2UsIHJldHVybiAiYXVkaW8vbXAzIi4KCiMjIE1hdGNoIG1wMyBo
ZWFkZXIKLSBJZiBsZW5ndGggaXMgbGVzcyB0aGFuIDQsIHJldHVybiBmYWxzZS4KLSBJZiBzZXF1
ZW5jZVtzXSBpcyBub3QgZXF1YWwgdG8gMHhmZiBhbmQgdGhlIHJlc3VsdCBvZiBhIGJpdHdpc2Ug
QU5ECiAgYmV0d2VlbiBzZXF1ZW5jZVtzICsgMV0gYW5kIDB4ZTAgaXMgbm90IGVxdWFsIHRvIDB4
ZTAsIHJldHVybiBmYWxzZS4KLSBMZXQgYGxheWVyYCBiZSB0aGUgcmVzdWx0IG9mIGEgYml0d2lz
ZSBBTkQgYmV0d2VlbiBzZXF1ZW5jZVtzICsgMV0gYW5kIDB4MDYKLSBJZiB0aGUgcmVzdWx0IG9m
IGEgYml0d2lzZSByaWdodCBzaGlmdCBvZiBvbmUgYml0IG9uIGBsYXllcmAgaXMgbm90IDAsIHJl
dHVybgotIExldCBgYml0cmF0ZWAgYmUgdGhlIHJlc3VsdCBvZiBhIGJpdHdpc2UgQU5EIGJldHdl
ZW4gc2VxdWVuY2VbcyArIDJdIGFuZCAweGYwCi0gSWYgdGhlIHJlc3VsdCBvZiBhIGJpdHdpc2Ug
cmlnaHQgc2hpZnQgb2YgZm91ciBiaXRzIG9uIGBiaXRyYXRlYCBpcyBub3QgMTUsCiAgcmV0dXJu
IGZhbHNlLgotIExldCBgc2FtcGxlcmF0ZWAgYmUgdGhlIHJlc3VsdCBvZiBhIGJpdHdpc2UgQU5E
IGJldHdlZW4gc2VxdWVuY2VbcyArIDNdIGFuZAogIDB4MGMuCi0gSWYgdGhlIHJlc3VsdCBvZiBh
IGJpdHdpc2UgcmlnaHQgc2hpZnQgb2YgdHdvIGJpdHMgb24gYHNhbXBsZXJhdGVgIGlzIG5vdCAz
LAogIHJldHVybiBmYWxzZS4KLSBMZXQgYGZpbmFsLWxheWVyYCBiZSB0aGUgcmVzdWx0IG9mIDQg
LSAoc2VxdWVuY2VbcyArIDFdKQotIEFwcGx5IGEgYml0d2lzZSBBTkQgdG8gYGZpbmFsLWxheWVy
YCBhbmQgMHgwNiwgYW5kIGFwcGx5IGEgYml0d2lzZSByaWdodCBzaGlmdApvZiBvbmUgYml0IHRv
IHRoZSByZXN1bHQuIElmIHRoaXMgdmFsdWUgaXMgbm90IDMsIHJldHVybiBmYWxzZS4KLSBSZXR1
cm4gdHJ1ZS4KCiMjIG1wMyBmcmFtZXNpemUKLSBJZiBoZWFkZXItdmVyc2lvbiBpcyAxLCBsZXQg
YHNjYWxlYCBiZSA3MiwgZWxzZSwgbGV0IGBzY2FsZWAgYmUgMTQ0LgotIExldCBzaXplIGJlIGBi
aXRyYXRlYCB0aW1lcyBgc2NhbGVgIGRpdmlkZWQgYnkgYGZyZXFgLgotIElmIGBwYWRgIGlzIFRy
dWUsIGluY3JlbWVudCBgc2l6ZWAgYnkgMS4KCiMjIG1wMyBwYXJzZQotIExldCB2ZXJzaW9uIGJl
IHRoZSByZXN1bHQgb2YgdGhlIGJpdHdpc2UgQU5EIGJldHdlZW4gc2VxdWVuY2VbcyArIDFdIGFu
ZCAweDE4LApiaXR3aXNlIHNoaWZ0ZWQgdG8gdGhlIHJpZ2h0IGJ5IDMgYml0cy4KLSBMZXQgYGJp
dHJhdGUtaW5kZXhgIGJlIHRoZSByZXN1bHQgb2YgdGhlIGJpdHdpc2UgQU5EIGJldHdlZW4gc2Vx
dWVuY2VbcyArIDJdCmFuZCAweGYwLCBiaXR3aXNlIHNoaWZ0ZWQgdG8gdGhlIHJpZ2h0IGJ5IGZv
dXIgYml0cy4KLSBJZiB0aGUgcmVzdWx0IG9mIHRoZSBiaXR3aXNlIEFORCBvZiB2ZXJzaW9uIGFu
ZCAweDAxIGlzIG5vbi16ZXJvLCBsZXQgYGJpdHJhdGVgCmJlIHRoZSB2YWx1ZSBnaXZlbiBieSBg
Yml0cmF0ZS1pbmRleGAgaW4gdGhlIHRhYmxlIG1wMi41LXJhdGVzCi0gSWYgdGhlIHJlc3VsdCBv
ZiB0aGUgYml0d2lzZSBBTkQgb2YgdmVyc2lvbiBhbmQgMHgwMSBpcyB6ZXJvLCBsZXQgYGJpdHJh
dGVgCmJlIHRoZSB2YWx1ZSBnaXZlbiBieSBgYml0cmF0ZS1pbmRleGAgaW4gdGhlIHRhYmxlIG1w
My1yYXRlcwotIExldCBgc2FtcGxlcmF0ZS1pbmRleGAgYmUgdGhlIHJlc3VsdCBvZiBhIGJpdHdp
c2UgQU5EIGJldHdlZW4gc2VxdWVuY2VbcyArIDJdCmFuZCAweDBjLCBiaXR3aXNlIHNoaWZ0ZWQg
dG8gdGhlIHJpZ2h0IGJ5IHR3byBiaXRzLgotIExldCBgc2FtcGxlcmF0ZWAgYmUgdGhlIHZhbHVl
IGdpdmVuIGJ5IGBzYW1wbGVyYXRlLWluZGV4YCBpbiB0aGUgYHNhbXBsZXJhdGVgIHRhYmxlLgot
IExldCBgcGFkYCBiZSB0aGUgcmVzdWx0IG9mIGEgYml0d2lzZSBhbmQgYmV0d2VlbiBzZXF1ZW5j
ZVtzICsgMl0gYW5kIDB4MDIsCmJpdHdpc2Ugc2hpZnRlciBieSBvbmUgYml0LgoKaW5kZXggfCBt
cDMtcmF0ZXMKLS0tLS0tKy0tLS0tLS0tLS0tLQogMCAgICB8IDAKIDEgICAgfCAzMjAwMAogMiAg
ICB8IDQwMDAwCiAzICAgIHwgNDgwMDAKIDQgICAgfCA1NjAwMAogNSAgICB8IDY0MDAwCiA2ICAg
IHwgODAwMDAKIDcgICAgfCA5NjAwMAogOCAgICB8IDExMjAwMAogOSAgICB8IDEyODAwMAoxMCAg
ICB8IDE2MDAwMAoxMSAgICB8IDE5MjAwMAoxMiAgICB8IDIyNDAwMAoxMyAgICB8IDI1NjAwMAox
NCAgICB8IDMyMDAwMAoKaW5kZXggfCBtcDIuNS1yYXRlcwotLS0tLS0rLS0tLS0tLS0tLS0tCiAw
ICAgIHwgMAogMSAgICB8IDgwMDAKIDIgICAgfCAxNjAwMAogMyAgICB8IDI0MDAwCiA0ICAgIHwg
MzIwMDAKIDUgICAgfCA0MDAwMAogNiAgICB8IDQ4MDAwCiA3ICAgIHwgNTYwMDAKIDggICAgfCA2
NDAwMAogOSAgICB8IDgwMDAwCjEwICAgIHwgOTYwMDAKMTEgICAgfCAxMTIwMDAKMTIgICAgfCAx
MjgwMDAKMTMgICAgfCAxNDQwMDAKMTQgICAgfCAxNjAwMDAKCmluZGV4IHwgc2FtcGxlcmF0ZQot
LS0tLS0rLS0tLS0tLS0tLS0KIDAgICAgfCA0NDEwMAogMSAgICB8IDQ4MDAwCiAyICAgIHwgMzIw
MDAK
</data>

          </attachment>
      

    </bug>

</bugzilla>