[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> </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> </o:p></p>
<p class="MsoNormal">My code is very simple<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">void AddTag(const char * 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:"Courier New""><o:p> </o:p></span></p> <p \
class="MsoNormal" style="text-autospace:none"><span style="font-family:"Courier \
New""> TagLib::MPEG::File \
f(URL);<o:p></o:p></span></p> <p class="MsoNormal" style="text-autospace:none"><span \
style="font-family:"Courier New""> \
TagLib::ID3v2::Tag *tag = f.ID3v2Tag();<o:p></o:p></span></p> <p class="MsoNormal" \
style="text-autospace:none"><span style="font-family:"Courier \
New""> 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:"Courier \
New""> 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:"Courier \
New""> \
frame->setOwner("xxxxxxxxxxxx");<o:p></o:p></span></p> <p \
class="MsoNormal" style="text-autospace:none"><span style="font-family:"Courier \
New""> \
frame->setData(v);<o:p></o:p></span></p> <p class="MsoNormal" \
style="text-autospace:none"><span style="font-family:"Courier \
New""> \
tag->addFrame(frame);<o:p></o:p></span></p> <p class="MsoNormal" \
style="text-autospace:none"><span style="font-family:"Courier \
New""> f.save();<o:p></o:p></span></p> <p \
class="MsoNormal" style="text-autospace:none"><span style="font-family:"Courier \
New"">}<o:p></o:p></span></p> <p class="MsoNormal" \
style="text-autospace:none"><span style="font-family:"Courier \
New""><o:p> </o:p></span></p> <p class="MsoNormal" \
style="text-autospace:none"><span style="font-family:"Courier New"">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().<o:p></o:p></span></p> <p \
class="MsoNormal" style="text-autospace:none"><span style="font-family:"Courier \
New""><o:p> </o:p></span></p> <p class="MsoNormal" \
style="text-autospace:none"><span style="font-family:"Courier New"">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:"Courier \
New""><o:p> </o:p></span></p> <p class="MsoNormal" \
style="text-autospace:none"><span style="font-family:"Courier New"">Any \
help would be appreciated.<o:p></o:p></span></p> <p class="MsoNormal" \
style="text-autospace:none"><span style="font-family:"Courier \
New""><o:p> </o:p></span></p> <p class="MsoNormal" \
style="text-autospace:none"><span style="font-family:"Courier \
New"">Andrew<o:p></o:p></span></p> <p class="MsoNormal" \
style="text-autospace:none"><span style="font-family:"Courier \
New""><o:p> </o:p></span></p> <p class="MsoNormal"><o:p> </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