<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=iso-8859-1">
<meta name=Generator content="Microsoft Word 12 (filtered medium)">
<style>
<!--
 /* Font Definitions */
 @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:0cm;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph
        {mso-style-priority:34;
        margin-top:0cm;
        margin-right:0cm;
        margin-bottom:0cm;
        margin-left:36.0pt;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";}
span.EmailStyle17
        {mso-style-type:personal-compose;
        font-family:"Calibri","sans-serif";
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;}
@page Section1
        {size:612.0pt 792.0pt;
        margin:72.0pt 72.0pt 72.0pt 72.0pt;}
div.Section1
        {page:Section1;}
 /* List Definitions */
 @list l0
        {mso-list-id:1941208824;
        mso-list-type:hybrid;
        mso-list-template-ids:-520696242 67698703 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;}
@list l0:level1
        {mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;}
ol
        {margin-bottom:0cm;}
ul
        {margin-bottom:0cm;}
-->
</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=blue vlink=purple>

<div class=Section1>

<p class=MsoNormal>Hello,<o:p></o:p></p>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

<p class=MsoNormal>Here is an aggregation of what I&#8217;ve come up with the
API review in the past days (more to come soon about MediaSource/Object/Controller).<o:p></o:p></p>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

<p class=MsoNormal>The change:<o:p></o:p></p>

<p class=MsoNormal>-there were some places where integers were used instead of
object (like for the AudioOutputDevice and the Effects). This now uses objects.
This is to me the biggest point in this patch: having a truly object-oriented
approach everywhere.<o:p></o:p></p>

<p class=MsoNormal>-property names were defined as QByteArray. This is changed to
QString because QByteArray will be painful. And anyway the QHash&lt;QByteArray,
QVariant&gt; is changed into QVariantMap.<o:p></o:p></p>

<p class=MsoNormal>-for the object description, the backend is now responsible
for creating ObjectDescriptionData instead if returning both indexes and
properties separately. This needs changes in the backend as well so don&#8217;t
expect it to compile out-of-the-box.<o:p></o:p></p>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

<p class=MsoNormal>Things to reduce size (all experimental):<o:p></o:p></p>

<p class=MsoNormal>-make qDebug a noop in release mode. Now in release we do <span
style='font-size:10.0pt;font-family:"Courier New"'>#define pDebug if (false)
qDebug (this saved 5% - ie 8KB - on my windows machine)</span><o:p></o:p></p>

<p class=MsoNormal>- ObjectDescription is no more a template. I defined
subclasses for it. We used this template just for having string typing. The
subclasses have the same meaning. The static fromIndex was removed thanks to
using ObjectDescription everywhere instead of integers. Replacing the templates
by simple class/sub-classes made the library size shrink on my machine by again
7%. I haven&#8217;t touch the ObjectDescriptionModel, so remove it from your
project file if you intend to be able to compile ;).<o:p></o:p></p>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

<p class=MsoNormal>To make sure it compiles, I suggest you remove ObjectDescriptionModel,
AudioPlayer, VideoPlayer, SeekSlider and VolumeSlider. I have patches for those
classes as well but the patch I send here is already very huge.<o:p></o:p></p>

<p class=MsoNormal>I had to filter out things in the patch so I hope it works
without too much trouble.<o:p></o:p></p>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

<p class=MsoNormal>Håvard it would be great if you could give us information
about how this patch affects the size of phonon on embedded. You could do that
in 2 steps:<o:p></o:p></p>

<p class=MsoListParagraph style='text-indent:-18.0pt;mso-list:l0 level1 lfo1'><![if !supportLists]><span
style='mso-list:Ignore'>1.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]>Removing ObjectDescriptionModel, AudioPlayer,
VideoPlayer, SeekSlider and VolumeSlider<o:p></o:p></p>

<p class=MsoListParagraph style='text-indent:-18.0pt;mso-list:l0 level1 lfo1'><![if !supportLists]><span
style='mso-list:Ignore'>2.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]>Applying the patch<o:p></o:p></p>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

<p class=MsoNormal>For the Windows size:<o:p></o:p></p>

<p class=MsoNormal>All in all I&#8217;m pretty happy with the on-going work and
think we&#8217;re not so far from having a good API ;).  Cyril is more working
on the backend currently and hopes to have something &#8220;visible&#8221;
soon.<o:p></o:p></p>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

<p class=MsoNormal>Regards,<o:p></o:p></p>

<p class=MsoNormal>Thierry<o:p></o:p></p>

</div>

</body>

</html>