[prev in list] [next in list] [prev in thread] [next in thread] 

List:       taglib-devel
Subject:    PRIV ID3V2Tag and length
From:       Avi Treistman <avi () treistman ! com>
Date:       2013-09-16 11:07:17
Message-ID: 891b02b6c0454e60bfa6ae8c1da830b7 () SERVER ! Treistman ! com
[Download RAW message or body]

Hi,

I am trying to add a PRIV ID3v2TAG using Taglib 1.8.

My code is very simple

void AddTag(const char *  payload, const char * URL)
{

       TagLib::MPEG::File f(URL);
       TagLib::ID3v2::Tag *tag = f.ID3v2Tag();
       TagLib::ID3v2::PrivateFrame *frame = new TagLib::ID3v2::PrivateFrame ();
       TagLib::ByteVector v = TagLib:ByteVector::fromCString(payload, \
strlen(payload));  frame->setOwner("xxxxxxxxxxxx");
       frame->setData(v);
       tag->addFrame(frame);
       f.save();
}

The payload is a base64-encoded string in ASCII encoding. After running the code, the \
tag is created in my MP3 file. However, the length field of the frame header is \
almost double what is should be, and the payload is padded with nulls until this \
length. It looks like somehow when calculating the frame length , the library is \
treating the ByteVector as 16-bit values. For example , on a payload of 1300 bytes, I \
am receiving a frame length of  2593. Not sure where some of the bytes disappeared. I \
have confirmed the vector size by printing v.size().

I am running on MacOS Mountain Lion 10.8.4.

Any help would be appreciated.

Andrew


[Attachment #3 (text/html)]

<html xmlns:v="urn:schemas-microsoft-com:vml" \
xmlns:o="urn:schemas-microsoft-com:office:office" \
xmlns:w="urn:schemas-microsoft-com:office:word" \
xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" \
xmlns="http://www.w3.org/TR/REC-html40"> <head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
	{font-family:"Cambria Math";
	panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
	{font-family:Calibri;
	panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
	{margin:0in;
	margin-bottom:.0001pt;
	font-size:11.0pt;
	font-family:"Calibri","sans-serif";}
a:link, span.MsoHyperlink
	{mso-style-priority:99;
	color:#0563C1;
	text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
	{mso-style-priority:99;
	color:#954F72;
	text-decoration:underline;}
span.EmailStyle17
	{mso-style-type:personal-compose;
	font-family:"Calibri","sans-serif";
	color:windowtext;}
.MsoChpDefault
	{mso-style-type:export-only;
	font-family:"Calibri","sans-serif";}
@page WordSection1
	{size:8.5in 11.0in;
	margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
	{page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-US" link="#0563C1" vlink="#954F72">
<div class="WordSection1">
<p class="MsoNormal">Hi,<o:p></o:p></p>
<p class="MsoNormal"><o:p>&nbsp;</o:p></p>
<p class="MsoNormal">I am trying to add a PRIV ID3v2TAG using Taglib 1.8. \
<o:p></o:p></p> <p class="MsoNormal"><o:p>&nbsp;</o:p></p>
<p class="MsoNormal">My code is very simple<o:p></o:p></p>
<p class="MsoNormal"><o:p>&nbsp;</o:p></p>
<p class="MsoNormal">void AddTag(const char *&nbsp; payload, const char * \
URL)<o:p></o:p></p> <p class="MsoNormal">{<o:p></o:p></p>
<p class="MsoNormal" style="text-autospace:none"><span \
style="font-family:&quot;Courier New&quot;"><o:p>&nbsp;</o:p></span></p> <p \
class="MsoNormal" style="text-autospace:none"><span style="font-family:&quot;Courier \
New&quot;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TagLib::MPEG::File \
f(URL);<o:p></o:p></span></p> <p class="MsoNormal" style="text-autospace:none"><span \
style="font-family:&quot;Courier New&quot;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \
TagLib::ID3v2::Tag *tag = f.ID3v2Tag();<o:p></o:p></span></p> <p class="MsoNormal" \
style="text-autospace:none"><span style="font-family:&quot;Courier \
New&quot;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TagLib::ID3v2::PrivateFrame *frame = \
new TagLib::ID3v2::PrivateFrame ();<o:p></o:p></span></p> <p class="MsoNormal" \
style="text-autospace:none"><span style="font-family:&quot;Courier \
New&quot;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TagLib::ByteVector v = \
TagLib:ByteVector::fromCString(payload, strlen(payload));<o:p></o:p></span></p> <p \
class="MsoNormal" style="text-autospace:none"><span style="font-family:&quot;Courier \
New&quot;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \
frame-&gt;setOwner(&quot;xxxxxxxxxxxx&quot;);<o:p></o:p></span></p> <p \
class="MsoNormal" style="text-autospace:none"><span style="font-family:&quot;Courier \
New&quot;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \
frame-&gt;setData(v);<o:p></o:p></span></p> <p class="MsoNormal" \
style="text-autospace:none"><span style="font-family:&quot;Courier \
New&quot;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \
tag-&gt;addFrame(frame);<o:p></o:p></span></p> <p class="MsoNormal" \
style="text-autospace:none"><span style="font-family:&quot;Courier \
New&quot;">&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;f.save();<o:p></o:p></span></p> <p \
class="MsoNormal" style="text-autospace:none"><span style="font-family:&quot;Courier \
New&quot;">}<o:p></o:p></span></p> <p class="MsoNormal" \
style="text-autospace:none"><span style="font-family:&quot;Courier \
New&quot;"><o:p>&nbsp;</o:p></span></p> <p class="MsoNormal" \
style="text-autospace:none"><span style="font-family:&quot;Courier New&quot;">The \
payload is a base64-encoded string in ASCII encoding. After running the code, the tag \
is created in my MP3 file. However, the length field of the frame header is almost  \
double what is should be, and the payload is padded with nulls until this length. It \
looks like somehow when calculating the frame length , the library is treating the \
ByteVector as 16-bit values. For example , on a payload of 1300 bytes, I am receiving \
a  frame length of &nbsp;2593. Not sure where some of the bytes disappeared. I have \
confirmed the vector size by printing v.size().<o:p></o:p></span></p> <p \
class="MsoNormal" style="text-autospace:none"><span style="font-family:&quot;Courier \
New&quot;"><o:p>&nbsp;</o:p></span></p> <p class="MsoNormal" \
style="text-autospace:none"><span style="font-family:&quot;Courier New&quot;">I am \
running on MacOS Mountain Lion 10.8.4.<o:p></o:p></span></p> <p class="MsoNormal" \
style="text-autospace:none"><span style="font-family:&quot;Courier \
New&quot;"><o:p>&nbsp;</o:p></span></p> <p class="MsoNormal" \
style="text-autospace:none"><span style="font-family:&quot;Courier New&quot;">Any \
help would be appreciated.<o:p></o:p></span></p> <p class="MsoNormal" \
style="text-autospace:none"><span style="font-family:&quot;Courier \
New&quot;"><o:p>&nbsp;</o:p></span></p> <p class="MsoNormal" \
style="text-autospace:none"><span style="font-family:&quot;Courier \
New&quot;">Andrew<o:p></o:p></span></p> <p class="MsoNormal" \
style="text-autospace:none"><span style="font-family:&quot;Courier \
New&quot;"><o:p>&nbsp;</o:p></span></p> <p class="MsoNormal"><o:p>&nbsp;</o:p></p>
</div>
</body>
</html>



_______________________________________________
taglib-devel mailing list
taglib-devel@kde.org
https://mail.kde.org/mailman/listinfo/taglib-devel

--===============5541293333454560185==--

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic