Thanks for the answers so far. We immediately removed the &#39;isProtected&#39; from ID3v2 usage since indeed this does not indicate DRM protection. <div><br></div><div>Further, I investigated a little bit how to detect DRM protection on specific files, and indeed, it seems you need to research the file contents itself, so patching tagLib is unavoidable. As far as I can see, it is only needed for WMA and MP4 files. </div>

<div><br></div><div><meta http-equiv="content-type" content="text/html; charset=utf-8"><div>MP3 DRM protection:</div><div>Indeed: Non-existant. Sorry about the confusion.</div><div><br></div><div>MP4 DRM protection:</div>

<div>Something with a &#39;drms&#39; atom should be detected, if it&#39;s present, the file is DRM protected. But I can not find proper documentation on the MP4 fileformats to know where to find this atom (I know it should be in the &#39;moov&#39; atom, but then the info I found stops...)</div>

</div><div><br></div><div>WMA DRM protection:</div><div><br></div><div>In TagLib&#39;s asffile.cpp you could add to the list of ByteVector&#39;s at the near-top of the file:</div><div>static ByteVector asfContentEncryptionGuid(&quot;\x22\x11\xB3\xFB\xBD\x23\x11\xD2\xB4\xB7\x00\xA0\xC9\x55\xFC\x6E&quot;);</div>

<meta http-equiv="content-type" content="text/html; charset=utf-8"><div><meta http-equiv="content-type" content="text/html; charset=utf-8">static ByteVector asfExtendedContentEncryptionGuid(&quot;\x29\x8A\xE6\x14\x26\x22\x4C\x17\xB9\x35\xDA\xE0\x7E\xE9\x28\x9C&quot;);</div>

<div><br></div><div>Then in ASF::File::read():</div><div>Change:</div><div><div>else {</div><div>  obj = new UnknownObject(guid);</div><div>}</div></div><div>To:</div><div><div>else {</div><div>  if (guid == contentEncryptionGuid || guid == extendedContentEncryptionGuid) {</div>

<div>    d-&gt;tag-&gt;setDRMProtected(true);</div><div>  }</div><div>  obj = new UnknownObject(guid);</div><div>}</div></div><div><br></div><div>Then in asftag.cpp / asftag.h add these 2 functions:</div><div><div><div>void ASF::Tag::setDRMProtected(bool value)</div>

<div>{</div><div>  setAttribute(&quot;WM/DRMProtected&quot;, value);</div><div>}</div></div></div><div><div>bool ASF::Tag::isDRMProtected() const</div><div>{</div><div>  if(d-&gt;attributeListMap.contains(&quot;WM/DRMProtected&quot;))</div>

<div>    return d-&gt;attributeListMap[&quot;WM/DRMProtected&quot;][0].toBool();</div><div>  return false;</div><div>}</div></div><div><br></div><div>2011/3/29 Lukáš Lalinský <span dir="ltr">&lt;<a href="mailto:lalinsky@gmail.com">lalinsky@gmail.com</a>&gt;</span></div>

<div><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;"><div class="im">On Tue, Mar 29, 2011 at 11:15 AM, Martijn van Rheenen &lt;<a href="mailto:rheenen@gmail.com">rheenen@gmail.com</a>&gt; wrote:<br>


&gt; Now, to the real question: I want to be able to detect whether a file is DRM<br>
&gt; protected. So, not only MP3, but also WMA, MP4-based files etc. Is there a<br>
&gt; proven method to find this in a most generic and fast way for a file? Or do<br>
&gt; I have to resort back to file-type-specific code like I had to do for Album<br>
&gt; Art? Note that I just want a &#39;bool isDRMProtected()&#39; method for this,<br>
&gt; nothing more.<br>
<br>
</div>I think you will have to do some research on this, because TagLib<br>
doesn&#39;t currently expose this kind of information. I wasn&#39;t even aware<br>
that MP3 files can be DRM-protected. For WMA and MP4 it should be<br>
possible to implement the checks in TagLib, as it has to read the<br>
internal structures anyway, but I&#39;m afraid that you can&#39;t do that<br>
without patching TagLib. I&#39;m willing to write the necessary code this,<br>
but I&#39;d need a pointer where to look for the bits and some examples of<br>
DRM-protected files (I don&#39;t have any).<br>
<div class="im"><br>
&gt; I already noticed the ID3v2 has a &#39;isProtected()&#39; method, but don&#39;t know<br>
&gt; whether that means &#39;DRM protected&#39; or not...<br>
<br>
</div>No, it means CRC checksum protection.<br>
<br>
Lukas<br>
_______________________________________________<br>
taglib-devel mailing list<br>
<a href="mailto:taglib-devel@kde.org">taglib-devel@kde.org</a><br>
<a href="https://mail.kde.org/mailman/listinfo/taglib-devel" target="_blank">https://mail.kde.org/mailman/listinfo/taglib-devel</a><br>
</blockquote></div><br></div>