Sophie

Sophie

distrib > Mageia > 4 > x86_64 > by-pkgid > cfb294ee1572908452c51e8499826074 > files > 69

libmtp-doc-1.1.6-2.mga4.x86_64.rpm

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.5"/>
<title>libmtp: The track management API.</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td style="padding-left: 0.5em;">
   <div id="projectname">libmtp
   &#160;<span id="projectnumber">1.1.6</span>
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.5 -->
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li><a href="modules.html"><span>Modules</span></a></li>
      <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
      <li><a href="files.html"><span>Files</span></a></li>
      <li><a href="examples.html"><span>Examples</span></a></li>
    </ul>
  </div>
</div><!-- top -->
<div class="header">
  <div class="summary">
<a href="#func-members">Functions</a>  </div>
  <div class="headertitle">
<div class="title">The track management API.</div>  </div>
</div><!--header-->
<div class="contents">
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:gab16e9e4e09fc35622bdf9b74250c1010"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__types.html#ga11ea8df2e635473592fc786085ff55b6">LIBMTP_track_t</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__tracks.html#gab16e9e4e09fc35622bdf9b74250c1010">LIBMTP_new_track_t</a> (void)</td></tr>
<tr class="separator:gab16e9e4e09fc35622bdf9b74250c1010"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gafeb0d51f0d25ef2389b786f8d319e88f"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__tracks.html#gafeb0d51f0d25ef2389b786f8d319e88f">LIBMTP_destroy_track_t</a> (<a class="el" href="group__types.html#ga11ea8df2e635473592fc786085ff55b6">LIBMTP_track_t</a> *)</td></tr>
<tr class="separator:gafeb0d51f0d25ef2389b786f8d319e88f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga7450418cda4aca2a6557915573e9402a"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__types.html#ga11ea8df2e635473592fc786085ff55b6">LIBMTP_track_t</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__tracks.html#ga7450418cda4aca2a6557915573e9402a">LIBMTP_Get_Tracklisting</a> (<a class="el" href="group__types.html#gac2e20fe8cf7ca4d2426e22865073db4f">LIBMTP_mtpdevice_t</a> *)</td></tr>
<tr class="separator:ga7450418cda4aca2a6557915573e9402a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga8efe264d65c566341d567b144bf77709"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__types.html#ga11ea8df2e635473592fc786085ff55b6">LIBMTP_track_t</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__tracks.html#ga8efe264d65c566341d567b144bf77709">LIBMTP_Get_Tracklisting_With_Callback</a> (<a class="el" href="group__types.html#gac2e20fe8cf7ca4d2426e22865073db4f">LIBMTP_mtpdevice_t</a> *, <a class="el" href="group__types.html#ga5d7782ad666c4c73186a8dce8ddda207">LIBMTP_progressfunc_t</a> const, void const *const)</td></tr>
<tr class="separator:ga8efe264d65c566341d567b144bf77709"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga8628207a151a6a34907670e3aac3fd49"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__types.html#ga11ea8df2e635473592fc786085ff55b6">LIBMTP_track_t</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__tracks.html#ga8628207a151a6a34907670e3aac3fd49">LIBMTP_Get_Tracklisting_With_Callback_For_Storage</a> (<a class="el" href="group__types.html#gac2e20fe8cf7ca4d2426e22865073db4f">LIBMTP_mtpdevice_t</a> *, uint32_t const, <a class="el" href="group__types.html#ga5d7782ad666c4c73186a8dce8ddda207">LIBMTP_progressfunc_t</a> const, void const *const)</td></tr>
<tr class="separator:ga8628207a151a6a34907670e3aac3fd49"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga93aaa8ce0db15dff891a4e0c8e5fd094"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__types.html#ga11ea8df2e635473592fc786085ff55b6">LIBMTP_track_t</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__tracks.html#ga93aaa8ce0db15dff891a4e0c8e5fd094">LIBMTP_Get_Trackmetadata</a> (<a class="el" href="group__types.html#gac2e20fe8cf7ca4d2426e22865073db4f">LIBMTP_mtpdevice_t</a> *, uint32_t const)</td></tr>
<tr class="separator:ga93aaa8ce0db15dff891a4e0c8e5fd094"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga515144dab27d36987726bb0962224065"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__tracks.html#ga515144dab27d36987726bb0962224065">LIBMTP_Get_Track_To_File</a> (<a class="el" href="group__types.html#gac2e20fe8cf7ca4d2426e22865073db4f">LIBMTP_mtpdevice_t</a> *, uint32_t, char const *const, <a class="el" href="group__types.html#ga5d7782ad666c4c73186a8dce8ddda207">LIBMTP_progressfunc_t</a> const, void const *const)</td></tr>
<tr class="separator:ga515144dab27d36987726bb0962224065"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga0836d80a1a78c604a805f0c347b8f236"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__tracks.html#ga0836d80a1a78c604a805f0c347b8f236">LIBMTP_Get_Track_To_File_Descriptor</a> (<a class="el" href="group__types.html#gac2e20fe8cf7ca4d2426e22865073db4f">LIBMTP_mtpdevice_t</a> *, uint32_t const, int const, <a class="el" href="group__types.html#ga5d7782ad666c4c73186a8dce8ddda207">LIBMTP_progressfunc_t</a> const, void const *const)</td></tr>
<tr class="separator:ga0836d80a1a78c604a805f0c347b8f236"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga3e6d050149afab06518e0b03406057e9"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__tracks.html#ga3e6d050149afab06518e0b03406057e9">LIBMTP_Get_Track_To_Handler</a> (<a class="el" href="group__types.html#gac2e20fe8cf7ca4d2426e22865073db4f">LIBMTP_mtpdevice_t</a> *, uint32_t const, <a class="el" href="group__types.html#ga09e82583ed001223ab37032719d732c8">MTPDataPutFunc</a>, void *, <a class="el" href="group__types.html#ga5d7782ad666c4c73186a8dce8ddda207">LIBMTP_progressfunc_t</a> const, void const *const)</td></tr>
<tr class="separator:ga3e6d050149afab06518e0b03406057e9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga5b5757877ee841f75fb94506073aa507"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__tracks.html#ga5b5757877ee841f75fb94506073aa507">LIBMTP_Send_Track_From_File</a> (<a class="el" href="group__types.html#gac2e20fe8cf7ca4d2426e22865073db4f">LIBMTP_mtpdevice_t</a> *, char const *const, <a class="el" href="group__types.html#ga11ea8df2e635473592fc786085ff55b6">LIBMTP_track_t</a> *const, <a class="el" href="group__types.html#ga5d7782ad666c4c73186a8dce8ddda207">LIBMTP_progressfunc_t</a> const, void const *const)</td></tr>
<tr class="separator:ga5b5757877ee841f75fb94506073aa507"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga982264bb96f5e90be2cba708346e8a1c"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__tracks.html#ga982264bb96f5e90be2cba708346e8a1c">LIBMTP_Send_Track_From_File_Descriptor</a> (<a class="el" href="group__types.html#gac2e20fe8cf7ca4d2426e22865073db4f">LIBMTP_mtpdevice_t</a> *, int const, <a class="el" href="group__types.html#ga11ea8df2e635473592fc786085ff55b6">LIBMTP_track_t</a> *const, <a class="el" href="group__types.html#ga5d7782ad666c4c73186a8dce8ddda207">LIBMTP_progressfunc_t</a> const, void const *const)</td></tr>
<tr class="separator:ga982264bb96f5e90be2cba708346e8a1c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gad571c96d1d45dfb824b466da3715dccd"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__tracks.html#gad571c96d1d45dfb824b466da3715dccd">LIBMTP_Send_Track_From_Handler</a> (<a class="el" href="group__types.html#gac2e20fe8cf7ca4d2426e22865073db4f">LIBMTP_mtpdevice_t</a> *, <a class="el" href="group__types.html#gac98a3ffb03ff220f92953e6d92f33146">MTPDataGetFunc</a>, void *, <a class="el" href="group__types.html#ga11ea8df2e635473592fc786085ff55b6">LIBMTP_track_t</a> *const, <a class="el" href="group__types.html#ga5d7782ad666c4c73186a8dce8ddda207">LIBMTP_progressfunc_t</a> const, void const *const)</td></tr>
<tr class="separator:gad571c96d1d45dfb824b466da3715dccd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga0b7b558a8eda3d508775a80f9306597d"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__tracks.html#ga0b7b558a8eda3d508775a80f9306597d">LIBMTP_Update_Track_Metadata</a> (<a class="el" href="group__types.html#gac2e20fe8cf7ca4d2426e22865073db4f">LIBMTP_mtpdevice_t</a> *, <a class="el" href="group__types.html#ga11ea8df2e635473592fc786085ff55b6">LIBMTP_track_t</a> const *const)</td></tr>
<tr class="separator:ga0b7b558a8eda3d508775a80f9306597d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga384f34487a48ae10972fc968e199ab26"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__tracks.html#ga384f34487a48ae10972fc968e199ab26">LIBMTP_Track_Exists</a> (<a class="el" href="group__types.html#gac2e20fe8cf7ca4d2426e22865073db4f">LIBMTP_mtpdevice_t</a> *, uint32_t const)</td></tr>
<tr class="separator:ga384f34487a48ae10972fc968e199ab26"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gafe3fd955b9816b848f6b2e93e0bb5541"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__tracks.html#gafe3fd955b9816b848f6b2e93e0bb5541">LIBMTP_Set_Track_Name</a> (<a class="el" href="group__types.html#gac2e20fe8cf7ca4d2426e22865073db4f">LIBMTP_mtpdevice_t</a> *, <a class="el" href="group__types.html#ga11ea8df2e635473592fc786085ff55b6">LIBMTP_track_t</a> *, const char *)</td></tr>
<tr class="separator:gafe3fd955b9816b848f6b2e93e0bb5541"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<h2 class="groupheader">Function Documentation</h2>
<a class="anchor" id="gafeb0d51f0d25ef2389b786f8d319e88f"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void LIBMTP_destroy_track_t </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__types.html#ga11ea8df2e635473592fc786085ff55b6">LIBMTP_track_t</a> *&#160;</td>
          <td class="paramname"><em>track</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>This destroys a track metadata structure and deallocates the memory used by it, including any strings. Never use a track metadata structure again after calling this function on it. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">track</td><td>the track metadata to destroy. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section see"><dt>See Also</dt><dd><a class="el" href="group__tracks.html#gab16e9e4e09fc35622bdf9b74250c1010">LIBMTP_new_track_t()</a> </dd></dl>

<p>References <a class="el" href="structLIBMTP__track__struct.html#a92bbcc8b44bad148c85a3aa29280b755">LIBMTP_track_struct::album</a>, <a class="el" href="structLIBMTP__track__struct.html#ae0706099f555fa7a36d55f7d7afce45b">LIBMTP_track_struct::artist</a>, <a class="el" href="structLIBMTP__track__struct.html#a236eec386c4d543f32b22f09c0944ac1">LIBMTP_track_struct::composer</a>, <a class="el" href="structLIBMTP__track__struct.html#a513ced50dcbdd94ab70b8a09a0fba642">LIBMTP_track_struct::date</a>, <a class="el" href="structLIBMTP__track__struct.html#a8b39e4ad45cb48fd0d3551a36d9a8aaf">LIBMTP_track_struct::filename</a>, <a class="el" href="structLIBMTP__track__struct.html#a16770448a9abcca6486c2e2fe41dfb22">LIBMTP_track_struct::genre</a>, and <a class="el" href="structLIBMTP__track__struct.html#a08f9a52cac093232f14543bbd87d586d">LIBMTP_track_struct::title</a>.</p>

<p>Referenced by <a class="el" href="group__tracks.html#ga8628207a151a6a34907670e3aac3fd49">LIBMTP_Get_Tracklisting_With_Callback_For_Storage()</a>, and <a class="el" href="group__tracks.html#ga93aaa8ce0db15dff891a4e0c8e5fd094">LIBMTP_Get_Trackmetadata()</a>.</p>

</div>
</div>
<a class="anchor" id="ga515144dab27d36987726bb0962224065"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int LIBMTP_Get_Track_To_File </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__types.html#gac2e20fe8cf7ca4d2426e22865073db4f">LIBMTP_mtpdevice_t</a> *&#160;</td>
          <td class="paramname"><em>device</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint32_t const&#160;</td>
          <td class="paramname"><em>id</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">char const *const&#160;</td>
          <td class="paramname"><em>path</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__types.html#ga5d7782ad666c4c73186a8dce8ddda207">LIBMTP_progressfunc_t</a> const&#160;</td>
          <td class="paramname"><em>callback</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void const *const&#160;</td>
          <td class="paramname"><em>data</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>This gets a track off the device to a file identified by a filename. This is actually just a wrapper for the <code><a class="el" href="group__tracks.html#ga515144dab27d36987726bb0962224065">LIBMTP_Get_Track_To_File()</a></code> function. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">device</td><td>a pointer to the device to get the track from. </td></tr>
    <tr><td class="paramname">id</td><td>the track ID of the track to retrieve. </td></tr>
    <tr><td class="paramname">path</td><td>a filename to use for the retrieved track. </td></tr>
    <tr><td class="paramname">callback</td><td>a progress indicator function or NULL to ignore. </td></tr>
    <tr><td class="paramname">data</td><td>a user-defined pointer that is passed along to the <code>progress</code> function in order to pass along some user defined data to the progress updates. If not used, set this to NULL. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>0 if the transfer was successful, any other value means failure. </dd></dl>
<dl class="section see"><dt>See Also</dt><dd><a class="el" href="group__tracks.html#ga0836d80a1a78c604a805f0c347b8f236">LIBMTP_Get_Track_To_File_Descriptor()</a> </dd></dl>

<p>References <a class="el" href="group__files.html#ga7c7d210d89a8ce35220914346db56e1b">LIBMTP_Get_File_To_File()</a>.</p>

</div>
</div>
<a class="anchor" id="ga0836d80a1a78c604a805f0c347b8f236"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int LIBMTP_Get_Track_To_File_Descriptor </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__types.html#gac2e20fe8cf7ca4d2426e22865073db4f">LIBMTP_mtpdevice_t</a> *&#160;</td>
          <td class="paramname"><em>device</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint32_t const&#160;</td>
          <td class="paramname"><em>id</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int const&#160;</td>
          <td class="paramname"><em>fd</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__types.html#ga5d7782ad666c4c73186a8dce8ddda207">LIBMTP_progressfunc_t</a> const&#160;</td>
          <td class="paramname"><em>callback</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void const *const&#160;</td>
          <td class="paramname"><em>data</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>This gets a track off the device to a file identified by a file descriptor. This is actually just a wrapper for the <code><a class="el" href="group__files.html#ga4cce388a9b114cc73112d3fcd7ff1340">LIBMTP_Get_File_To_File_Descriptor()</a></code> function. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">device</td><td>a pointer to the device to get the track from. </td></tr>
    <tr><td class="paramname">id</td><td>the track ID of the track to retrieve. </td></tr>
    <tr><td class="paramname">fd</td><td>a file descriptor to write the track to. </td></tr>
    <tr><td class="paramname">callback</td><td>a progress indicator function or NULL to ignore. </td></tr>
    <tr><td class="paramname">data</td><td>a user-defined pointer that is passed along to the <code>progress</code> function in order to pass along some user defined data to the progress updates. If not used, set this to NULL. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>0 if the transfer was successful, any other value means failure. </dd></dl>
<dl class="section see"><dt>See Also</dt><dd><a class="el" href="group__tracks.html#ga515144dab27d36987726bb0962224065">LIBMTP_Get_Track_To_File()</a> </dd></dl>

<p>References <a class="el" href="group__files.html#ga4cce388a9b114cc73112d3fcd7ff1340">LIBMTP_Get_File_To_File_Descriptor()</a>.</p>

</div>
</div>
<a class="anchor" id="ga3e6d050149afab06518e0b03406057e9"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int LIBMTP_Get_Track_To_Handler </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__types.html#gac2e20fe8cf7ca4d2426e22865073db4f">LIBMTP_mtpdevice_t</a> *&#160;</td>
          <td class="paramname"><em>device</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint32_t const&#160;</td>
          <td class="paramname"><em>id</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__types.html#ga09e82583ed001223ab37032719d732c8">MTPDataPutFunc</a>&#160;</td>
          <td class="paramname"><em>put_func</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&#160;</td>
          <td class="paramname"><em>priv</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__types.html#ga5d7782ad666c4c73186a8dce8ddda207">LIBMTP_progressfunc_t</a> const&#160;</td>
          <td class="paramname"><em>callback</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void const *const&#160;</td>
          <td class="paramname"><em>data</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>This gets a track off the device to a handler function. This is actually just a wrapper for the <code><a class="el" href="group__files.html#ga03c55d8e1b162ca7b9ec546b276bc038">LIBMTP_Get_File_To_Handler()</a></code> function. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">device</td><td>a pointer to the device to get the track from. </td></tr>
    <tr><td class="paramname">id</td><td>the track ID of the track to retrieve. </td></tr>
    <tr><td class="paramname">put_func</td><td>the function to call when we have data. </td></tr>
    <tr><td class="paramname">priv</td><td>the user-defined pointer that is passed to <code>put_func</code>. </td></tr>
    <tr><td class="paramname">callback</td><td>a progress indicator function or NULL to ignore. </td></tr>
    <tr><td class="paramname">data</td><td>a user-defined pointer that is passed along to the <code>progress</code> function in order to pass along some user defined data to the progress updates. If not used, set this to NULL. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>0 if the transfer was successful, any other value means failure. </dd></dl>

<p>References <a class="el" href="group__files.html#ga03c55d8e1b162ca7b9ec546b276bc038">LIBMTP_Get_File_To_Handler()</a>.</p>

</div>
</div>
<a class="anchor" id="ga7450418cda4aca2a6557915573e9402a"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__types.html#ga11ea8df2e635473592fc786085ff55b6">LIBMTP_track_t</a>* LIBMTP_Get_Tracklisting </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__types.html#gac2e20fe8cf7ca4d2426e22865073db4f">LIBMTP_mtpdevice_t</a> *&#160;</td>
          <td class="paramname"><em>device</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>THIS FUNCTION IS DEPRECATED. PLEASE UPDATE YOUR CODE IN ORDER NOT TO USE IT. </p>
<dl class="section see"><dt>See Also</dt><dd><a class="el" href="group__tracks.html#ga8efe264d65c566341d567b144bf77709">LIBMTP_Get_Tracklisting_With_Callback()</a> </dd></dl>

<p>References <a class="el" href="group__tracks.html#ga8efe264d65c566341d567b144bf77709">LIBMTP_Get_Tracklisting_With_Callback()</a>.</p>

</div>
</div>
<a class="anchor" id="ga8efe264d65c566341d567b144bf77709"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__types.html#ga11ea8df2e635473592fc786085ff55b6">LIBMTP_track_t</a>* LIBMTP_Get_Tracklisting_With_Callback </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__types.html#gac2e20fe8cf7ca4d2426e22865073db4f">LIBMTP_mtpdevice_t</a> *&#160;</td>
          <td class="paramname"><em>device</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__types.html#ga5d7782ad666c4c73186a8dce8ddda207">LIBMTP_progressfunc_t</a> const&#160;</td>
          <td class="paramname"><em>callback</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void const *const&#160;</td>
          <td class="paramname"><em>data</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>This returns a long list of all tracks available on the current MTP device. Tracks include multimedia objects, both music tracks and video tracks. Typical usage:</p>
<pre>
LIBMTP_track_t *tracklist;</pre><pre>tracklist = LIBMTP_Get_Tracklisting_With_Callback(device, callback, data);
while (tracklist != NULL) {
  LIBMTP_track_t *tmp;</pre><pre>  // Do something on each element in the list here...
  tmp = tracklist;
  tracklist = tracklist-&gt;next;
  LIBMTP_destroy_track_t(tmp);
}
</pre><p>If you want to group your track listing by storage (per storage unit) or arrange tracks into folders, you must dereference the <code>storage_id</code> and/or <code>parent_id</code> field of the returned <code>LIBMTP_track_t</code> struct. To arrange by folders or files you typically have to create the proper trees by calls to <code><a class="el" href="group__basic.html#ga7a72804e7a444ca4f185f078369c41b1">LIBMTP_Get_Storage()</a></code> and/or <code><a class="el" href="group__folders.html#ga37f9714e570baccaf7af42070ad3025f">LIBMTP_Get_Folder_List()</a></code> first.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">device</td><td>a pointer to the device to get the track listing for. </td></tr>
    <tr><td class="paramname">callback</td><td>a function to be called during the tracklisting retrieveal for displaying progress bars etc, or NULL if you don't want any callbacks. </td></tr>
    <tr><td class="paramname">data</td><td>a user-defined pointer that is passed along to the <code>progress</code> function in order to pass along some user defined data to the progress updates. If not used, set this to NULL. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>a list of tracks that can be followed using the <code>next</code> field of the <code>LIBMTP_track_t</code> data structure. Each of the metadata tags must be freed after use, and may contain only partial metadata information, i.e. one or several fields may be NULL or 0. </dd></dl>
<dl class="section see"><dt>See Also</dt><dd><a class="el" href="group__tracks.html#ga93aaa8ce0db15dff891a4e0c8e5fd094">LIBMTP_Get_Trackmetadata()</a> </dd></dl>

<p>References <a class="el" href="group__tracks.html#ga8628207a151a6a34907670e3aac3fd49">LIBMTP_Get_Tracklisting_With_Callback_For_Storage()</a>.</p>

<p>Referenced by <a class="el" href="group__tracks.html#ga7450418cda4aca2a6557915573e9402a">LIBMTP_Get_Tracklisting()</a>.</p>

</div>
</div>
<a class="anchor" id="ga8628207a151a6a34907670e3aac3fd49"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__types.html#ga11ea8df2e635473592fc786085ff55b6">LIBMTP_track_t</a>* LIBMTP_Get_Tracklisting_With_Callback_For_Storage </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__types.html#gac2e20fe8cf7ca4d2426e22865073db4f">LIBMTP_mtpdevice_t</a> *&#160;</td>
          <td class="paramname"><em>device</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint32_t const&#160;</td>
          <td class="paramname"><em>storage_id</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__types.html#ga5d7782ad666c4c73186a8dce8ddda207">LIBMTP_progressfunc_t</a> const&#160;</td>
          <td class="paramname"><em>callback</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void const *const&#160;</td>
          <td class="paramname"><em>data</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>This returns a long list of all tracks available on the current MTP device. Tracks include multimedia objects, both music tracks and video tracks. Typical usage:</p>
<pre>
LIBMTP_track_t *tracklist;</pre><pre>tracklist = LIBMTP_Get_Tracklisting_With_Callback_For_Storage(device, storage_id, callback, data);
while (tracklist != NULL) {
  LIBMTP_track_t *tmp;</pre><pre>  // Do something on each element in the list here...
  tmp = tracklist;
  tracklist = tracklist-&gt;next;
  LIBMTP_destroy_track_t(tmp);
}
</pre><p>If you want to group your track listing by storage (per storage unit) or arrange tracks into folders, you must dereference the <code>storage_id</code> and/or <code>parent_id</code> field of the returned <code>LIBMTP_track_t</code> struct. To arrange by folders or files you typically have to create the proper trees by calls to <code><a class="el" href="group__basic.html#ga7a72804e7a444ca4f185f078369c41b1">LIBMTP_Get_Storage()</a></code> and/or <code><a class="el" href="group__folders.html#ga37f9714e570baccaf7af42070ad3025f">LIBMTP_Get_Folder_List()</a></code> first.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">device</td><td>a pointer to the device to get the track listing for. </td></tr>
    <tr><td class="paramname">storage_id</td><td>ID of device storage (if null, no filter) </td></tr>
    <tr><td class="paramname">callback</td><td>a function to be called during the tracklisting retrieveal for displaying progress bars etc, or NULL if you don't want any callbacks. </td></tr>
    <tr><td class="paramname">data</td><td>a user-defined pointer that is passed along to the <code>progress</code> function in order to pass along some user defined data to the progress updates. If not used, set this to NULL. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>a list of tracks that can be followed using the <code>next</code> field of the <code>LIBMTP_track_t</code> data structure. Each of the metadata tags must be freed after use, and may contain only partial metadata information, i.e. one or several fields may be NULL or 0. </dd></dl>
<dl class="section see"><dt>See Also</dt><dd><a class="el" href="group__tracks.html#ga93aaa8ce0db15dff891a4e0c8e5fd094">LIBMTP_Get_Trackmetadata()</a> </dd></dl>

<p>References <a class="el" href="structLIBMTP__track__struct.html#a8b39e4ad45cb48fd0d3551a36d9a8aaf">LIBMTP_track_struct::filename</a>, <a class="el" href="structLIBMTP__track__struct.html#a5e47593747628d03814941542ee33e78">LIBMTP_track_struct::filesize</a>, <a class="el" href="structLIBMTP__track__struct.html#acfef436ce1505118ca6c24b91b8a1e30">LIBMTP_track_struct::filetype</a>, <a class="el" href="structLIBMTP__track__struct.html#a794e60bb22d9dd93b2f4cd7bb935f10b">LIBMTP_track_struct::item_id</a>, <a class="el" href="group__tracks.html#gafeb0d51f0d25ef2389b786f8d319e88f">LIBMTP_destroy_track_t()</a>, <a class="el" href="group__types.html#ga09a6cd06f954d3bf468e4d7b1c8a3c26">LIBMTP_FILETYPE_IS_TRACK</a>, <a class="el" href="group__tracks.html#gab16e9e4e09fc35622bdf9b74250c1010">LIBMTP_new_track_t()</a>, <a class="el" href="structLIBMTP__track__struct.html#ac1f006d54d3512763493fe1dc9be6ebc">LIBMTP_track_struct::modificationdate</a>, <a class="el" href="structLIBMTP__track__struct.html#aca7886f5c80d5282186a46a33c909dec">LIBMTP_track_struct::next</a>, <a class="el" href="structLIBMTP__mtpdevice__struct.html#aca6eb02fe46e8da41adb54e048176b42">LIBMTP_mtpdevice_struct::params</a>, <a class="el" href="structLIBMTP__track__struct.html#a6b3aee8c78864cbf0559795f7301fa87">LIBMTP_track_struct::parent_id</a>, <a class="el" href="structLIBMTP__track__struct.html#a17f3721dfe5fe4b17d6cd8071f96fbda">LIBMTP_track_struct::storage_id</a>, and <a class="el" href="structLIBMTP__mtpdevice__struct.html#a5560f6638d9626ab26a2be48e9585ad1">LIBMTP_mtpdevice_struct::usbinfo</a>.</p>

<p>Referenced by <a class="el" href="group__tracks.html#ga8efe264d65c566341d567b144bf77709">LIBMTP_Get_Tracklisting_With_Callback()</a>.</p>

</div>
</div>
<a class="anchor" id="ga93aaa8ce0db15dff891a4e0c8e5fd094"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__types.html#ga11ea8df2e635473592fc786085ff55b6">LIBMTP_track_t</a>* LIBMTP_Get_Trackmetadata </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__types.html#gac2e20fe8cf7ca4d2426e22865073db4f">LIBMTP_mtpdevice_t</a> *&#160;</td>
          <td class="paramname"><em>device</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint32_t const&#160;</td>
          <td class="paramname"><em>trackid</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>This function retrieves the metadata for a single track off the device.</p>
<p>Do not call this function repeatedly! The track handles are linearly searched O(n) and the call may involve (slow) USB traffic, so use <code><a class="el" href="group__tracks.html#ga7450418cda4aca2a6557915573e9402a">LIBMTP_Get_Tracklisting()</a></code> and cache the tracks, preferably as an efficient data structure such as a hash list.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">device</td><td>a pointer to the device to get the track metadata from. </td></tr>
    <tr><td class="paramname">trackid</td><td>the object ID of the track that you want the metadata for. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>a track metadata entry on success or NULL on failure. </dd></dl>
<dl class="section see"><dt>See Also</dt><dd><a class="el" href="group__tracks.html#ga7450418cda4aca2a6557915573e9402a">LIBMTP_Get_Tracklisting()</a> </dd></dl>

<p>References <a class="el" href="structLIBMTP__track__struct.html#a8b39e4ad45cb48fd0d3551a36d9a8aaf">LIBMTP_track_struct::filename</a>, <a class="el" href="structLIBMTP__track__struct.html#a5e47593747628d03814941542ee33e78">LIBMTP_track_struct::filesize</a>, <a class="el" href="structLIBMTP__track__struct.html#acfef436ce1505118ca6c24b91b8a1e30">LIBMTP_track_struct::filetype</a>, <a class="el" href="structLIBMTP__track__struct.html#a794e60bb22d9dd93b2f4cd7bb935f10b">LIBMTP_track_struct::item_id</a>, <a class="el" href="group__tracks.html#gafeb0d51f0d25ef2389b786f8d319e88f">LIBMTP_destroy_track_t()</a>, <a class="el" href="group__types.html#ga09a6cd06f954d3bf468e4d7b1c8a3c26">LIBMTP_FILETYPE_IS_TRACK</a>, <a class="el" href="group__tracks.html#gab16e9e4e09fc35622bdf9b74250c1010">LIBMTP_new_track_t()</a>, <a class="el" href="structLIBMTP__track__struct.html#ac1f006d54d3512763493fe1dc9be6ebc">LIBMTP_track_struct::modificationdate</a>, <a class="el" href="structLIBMTP__mtpdevice__struct.html#aca6eb02fe46e8da41adb54e048176b42">LIBMTP_mtpdevice_struct::params</a>, <a class="el" href="structLIBMTP__track__struct.html#a6b3aee8c78864cbf0559795f7301fa87">LIBMTP_track_struct::parent_id</a>, <a class="el" href="structLIBMTP__track__struct.html#a17f3721dfe5fe4b17d6cd8071f96fbda">LIBMTP_track_struct::storage_id</a>, and <a class="el" href="structLIBMTP__mtpdevice__struct.html#a5560f6638d9626ab26a2be48e9585ad1">LIBMTP_mtpdevice_struct::usbinfo</a>.</p>

</div>
</div>
<a class="anchor" id="gab16e9e4e09fc35622bdf9b74250c1010"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__types.html#ga11ea8df2e635473592fc786085ff55b6">LIBMTP_track_t</a>* LIBMTP_new_track_t </td>
          <td>(</td>
          <td class="paramtype">void&#160;</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>This creates a new track metadata structure and allocates memory for it. Notice that if you add strings to this structure they will be freed by the corresponding <code>LIBMTP_destroy_track_t</code> operation later, so be careful of using strdup() when assigning strings, e.g.:</p>
<pre>
LIBMTP_track_t *track = <a class="el" href="group__tracks.html#gab16e9e4e09fc35622bdf9b74250c1010">LIBMTP_new_track_t()</a>;
track-&gt;title = strdup(titlestr);
....
LIBMTP_destroy_track_t(track);
</pre><dl class="section return"><dt>Returns</dt><dd>a pointer to the newly allocated metadata structure. </dd></dl>
<dl class="section see"><dt>See Also</dt><dd><a class="el" href="group__tracks.html#gafeb0d51f0d25ef2389b786f8d319e88f">LIBMTP_destroy_track_t()</a> </dd></dl>

<p>References <a class="el" href="structLIBMTP__track__struct.html#a794e60bb22d9dd93b2f4cd7bb935f10b">LIBMTP_track_struct::item_id</a>.</p>

<p>Referenced by <a class="el" href="group__tracks.html#ga8628207a151a6a34907670e3aac3fd49">LIBMTP_Get_Tracklisting_With_Callback_For_Storage()</a>, and <a class="el" href="group__tracks.html#ga93aaa8ce0db15dff891a4e0c8e5fd094">LIBMTP_Get_Trackmetadata()</a>.</p>

</div>
</div>
<a class="anchor" id="ga5b5757877ee841f75fb94506073aa507"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int LIBMTP_Send_Track_From_File </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__types.html#gac2e20fe8cf7ca4d2426e22865073db4f">LIBMTP_mtpdevice_t</a> *&#160;</td>
          <td class="paramname"><em>device</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">char const *const&#160;</td>
          <td class="paramname"><em>path</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__types.html#ga11ea8df2e635473592fc786085ff55b6">LIBMTP_track_t</a> *const&#160;</td>
          <td class="paramname"><em>metadata</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__types.html#ga5d7782ad666c4c73186a8dce8ddda207">LIBMTP_progressfunc_t</a> const&#160;</td>
          <td class="paramname"><em>callback</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void const *const&#160;</td>
          <td class="paramname"><em>data</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>This function sends a track from a local file to an MTP device. A filename and a set of metadata must be given as input. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">device</td><td>a pointer to the device to send the track to. </td></tr>
    <tr><td class="paramname">path</td><td>the filename of a local file which will be sent. </td></tr>
    <tr><td class="paramname">metadata</td><td>a track metadata set to be written along with the file. After this call the field <code>metadata-&gt;item_id</code> will contain the new track ID. Other fields such as the <code>metadata-&gt;filename</code>, <code>metadata-&gt;parent_id</code> or <code>metadata-&gt;storage_id</code> may also change during this operation due to device restrictions, so do not rely on the contents of this struct to be preserved in any way. <ul>
<li>
<code>metadata-&gt;parent_id</code> should be set to the parent (e.g. folder) to store this track in. Since some devices are a bit picky about where files are placed, a default folder will be chosen if libmtp has detected one for the current filetype and this parameter is set to 0. If this is 0 and no default folder can be found, the file will be stored in the root folder. </li>
<li>
<code>metadata-&gt;storage_id</code> should be set to the desired storage (e.g. memory card or whatever your device presents) to store this track in. Setting this to 0 will store the track on the primary storage. </li>
</ul>
</td></tr>
    <tr><td class="paramname">callback</td><td>a progress indicator function or NULL to ignore. </td></tr>
    <tr><td class="paramname">data</td><td>a user-defined pointer that is passed along to the <code>progress</code> function in order to pass along some user defined data to the progress updates. If not used, set this to NULL. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>0 if the transfer was successful, any other value means failure. </dd></dl>
<dl class="section see"><dt>See Also</dt><dd><a class="el" href="group__tracks.html#ga982264bb96f5e90be2cba708346e8a1c">LIBMTP_Send_Track_From_File_Descriptor()</a> </dd>
<dd>
<a class="el" href="group__files.html#ga552e760a429b0e47a593b8ade20bb763">LIBMTP_Send_File_From_File()</a> </dd>
<dd>
<a class="el" href="group__objects.html#gac867594319fa48a0d6077d17aaf66222">LIBMTP_Delete_Object()</a> </dd></dl>

<p>References <a class="el" href="group__tracks.html#ga982264bb96f5e90be2cba708346e8a1c">LIBMTP_Send_Track_From_File_Descriptor()</a>.</p>

</div>
</div>
<a class="anchor" id="ga982264bb96f5e90be2cba708346e8a1c"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int LIBMTP_Send_Track_From_File_Descriptor </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__types.html#gac2e20fe8cf7ca4d2426e22865073db4f">LIBMTP_mtpdevice_t</a> *&#160;</td>
          <td class="paramname"><em>device</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int const&#160;</td>
          <td class="paramname"><em>fd</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__types.html#ga11ea8df2e635473592fc786085ff55b6">LIBMTP_track_t</a> *const&#160;</td>
          <td class="paramname"><em>metadata</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__types.html#ga5d7782ad666c4c73186a8dce8ddda207">LIBMTP_progressfunc_t</a> const&#160;</td>
          <td class="paramname"><em>callback</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void const *const&#160;</td>
          <td class="paramname"><em>data</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>This function sends a track from a file descriptor to an MTP device. A filename and a set of metadata must be given as input. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">device</td><td>a pointer to the device to send the track to. </td></tr>
    <tr><td class="paramname">fd</td><td>the filedescriptor for a local file which will be sent. </td></tr>
    <tr><td class="paramname">metadata</td><td>a track metadata set to be written along with the file. After this call the field <code>metadata-&gt;item_id</code> will contain the new track ID. Other fields such as the <code>metadata-&gt;filename</code>, <code>metadata-&gt;parent_id</code> or <code>metadata-&gt;storage_id</code> may also change during this operation due to device restrictions, so do not rely on the contents of this struct to be preserved in any way. <ul>
<li>
<code>metadata-&gt;parent_id</code> should be set to the parent (e.g. folder) to store this track in. Since some devices are a bit picky about where files are placed, a default folder will be chosen if libmtp has detected one for the current filetype and this parameter is set to 0. If this is 0 and no default folder can be found, the file will be stored in the root folder. </li>
<li>
<code>metadata-&gt;storage_id</code> should be set to the desired storage (e.g. memory card or whatever your device presents) to store this track in. Setting this to 0 will store the track on the primary storage. </li>
</ul>
</td></tr>
    <tr><td class="paramname">callback</td><td>a progress indicator function or NULL to ignore. </td></tr>
    <tr><td class="paramname">data</td><td>a user-defined pointer that is passed along to the <code>progress</code> function in order to pass along some user defined data to the progress updates. If not used, set this to NULL. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>0 if the transfer was successful, any other value means failure. </dd></dl>
<dl class="section see"><dt>See Also</dt><dd><a class="el" href="group__tracks.html#ga5b5757877ee841f75fb94506073aa507">LIBMTP_Send_Track_From_File()</a> </dd>
<dd>
<a class="el" href="group__objects.html#gac867594319fa48a0d6077d17aaf66222">LIBMTP_Delete_Object()</a> </dd></dl>

<p>References <a class="el" href="structLIBMTP__file__struct.html#a2e92321a14e1604da9ab4648184d182d">LIBMTP_file_struct::filename</a>, <a class="el" href="structLIBMTP__track__struct.html#a8b39e4ad45cb48fd0d3551a36d9a8aaf">LIBMTP_track_struct::filename</a>, <a class="el" href="structLIBMTP__file__struct.html#a624427efbda181c611602a1b1ebef577">LIBMTP_file_struct::filesize</a>, <a class="el" href="structLIBMTP__track__struct.html#a5e47593747628d03814941542ee33e78">LIBMTP_track_struct::filesize</a>, <a class="el" href="structLIBMTP__file__struct.html#af72d13c38d217c7f91b4db288a0edfc3">LIBMTP_file_struct::filetype</a>, <a class="el" href="structLIBMTP__track__struct.html#acfef436ce1505118ca6c24b91b8a1e30">LIBMTP_track_struct::filetype</a>, <a class="el" href="structLIBMTP__file__struct.html#aaf61e9bb66af366adbc1ea834ffcb459">LIBMTP_file_struct::item_id</a>, <a class="el" href="structLIBMTP__track__struct.html#a794e60bb22d9dd93b2f4cd7bb935f10b">LIBMTP_track_struct::item_id</a>, <a class="el" href="group__types.html#ga09a6cd06f954d3bf468e4d7b1c8a3c26">LIBMTP_FILETYPE_IS_TRACK</a>, <a class="el" href="group__files.html#ga1784d5bd971a354c6d7ec10d6e532ccf">LIBMTP_Send_File_From_File_Descriptor()</a>, <a class="el" href="group__tracks.html#ga0b7b558a8eda3d508775a80f9306597d">LIBMTP_Update_Track_Metadata()</a>, <a class="el" href="structLIBMTP__file__struct.html#a220976ae777e294a0001ce8d781aaed6">LIBMTP_file_struct::next</a>, <a class="el" href="structLIBMTP__mtpdevice__struct.html#aca6eb02fe46e8da41adb54e048176b42">LIBMTP_mtpdevice_struct::params</a>, <a class="el" href="structLIBMTP__file__struct.html#a726a522a0a49edbcde86e86f61bc3ae7">LIBMTP_file_struct::parent_id</a>, <a class="el" href="structLIBMTP__track__struct.html#a6b3aee8c78864cbf0559795f7301fa87">LIBMTP_track_struct::parent_id</a>, <a class="el" href="structLIBMTP__file__struct.html#aeaa79b7e20ce937ab6c80d52e4d4ffba">LIBMTP_file_struct::storage_id</a>, <a class="el" href="structLIBMTP__track__struct.html#a17f3721dfe5fe4b17d6cd8071f96fbda">LIBMTP_track_struct::storage_id</a>, and <a class="el" href="structLIBMTP__mtpdevice__struct.html#a5560f6638d9626ab26a2be48e9585ad1">LIBMTP_mtpdevice_struct::usbinfo</a>.</p>

<p>Referenced by <a class="el" href="group__tracks.html#ga5b5757877ee841f75fb94506073aa507">LIBMTP_Send_Track_From_File()</a>.</p>

</div>
</div>
<a class="anchor" id="gad571c96d1d45dfb824b466da3715dccd"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int LIBMTP_Send_Track_From_Handler </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__types.html#gac2e20fe8cf7ca4d2426e22865073db4f">LIBMTP_mtpdevice_t</a> *&#160;</td>
          <td class="paramname"><em>device</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__types.html#gac98a3ffb03ff220f92953e6d92f33146">MTPDataGetFunc</a>&#160;</td>
          <td class="paramname"><em>get_func</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&#160;</td>
          <td class="paramname"><em>priv</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__types.html#ga11ea8df2e635473592fc786085ff55b6">LIBMTP_track_t</a> *const&#160;</td>
          <td class="paramname"><em>metadata</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__types.html#ga5d7782ad666c4c73186a8dce8ddda207">LIBMTP_progressfunc_t</a> const&#160;</td>
          <td class="paramname"><em>callback</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void const *const&#160;</td>
          <td class="paramname"><em>data</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>This function sends a track from a handler function to an MTP device. A filename and a set of metadata must be given as input. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">device</td><td>a pointer to the device to send the track to. </td></tr>
    <tr><td class="paramname">get_func</td><td>the function to call when we have data. </td></tr>
    <tr><td class="paramname">priv</td><td>the user-defined pointer that is passed to <code>get_func</code>. </td></tr>
    <tr><td class="paramname">metadata</td><td>a track metadata set to be written along with the file. After this call the field <code>metadata-&gt;item_id</code> will contain the new track ID. Other fields such as the <code>metadata-&gt;filename</code>, <code>metadata-&gt;parent_id</code> or <code>metadata-&gt;storage_id</code> may also change during this operation due to device restrictions, so do not rely on the contents of this struct to be preserved in any way. <ul>
<li>
<code>metadata-&gt;parent_id</code> should be set to the parent (e.g. folder) to store this track in. Since some devices are a bit picky about where files are placed, a default folder will be chosen if libmtp has detected one for the current filetype and this parameter is set to 0. If this is 0 and no default folder can be found, the file will be stored in the root folder. </li>
<li>
<code>metadata-&gt;storage_id</code> should be set to the desired storage (e.g. memory card or whatever your device presents) to store this track in. Setting this to 0 will store the track on the primary storage. </li>
</ul>
</td></tr>
    <tr><td class="paramname">callback</td><td>a progress indicator function or NULL to ignore. </td></tr>
    <tr><td class="paramname">data</td><td>a user-defined pointer that is passed along to the <code>progress</code> function in order to pass along some user defined data to the progress updates. If not used, set this to NULL. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>0 if the transfer was successful, any other value means failure. </dd></dl>
<dl class="section see"><dt>See Also</dt><dd><a class="el" href="group__tracks.html#ga5b5757877ee841f75fb94506073aa507">LIBMTP_Send_Track_From_File()</a> </dd>
<dd>
<a class="el" href="group__objects.html#gac867594319fa48a0d6077d17aaf66222">LIBMTP_Delete_Object()</a> </dd></dl>

<p>References <a class="el" href="structLIBMTP__file__struct.html#a2e92321a14e1604da9ab4648184d182d">LIBMTP_file_struct::filename</a>, <a class="el" href="structLIBMTP__track__struct.html#a8b39e4ad45cb48fd0d3551a36d9a8aaf">LIBMTP_track_struct::filename</a>, <a class="el" href="structLIBMTP__file__struct.html#a624427efbda181c611602a1b1ebef577">LIBMTP_file_struct::filesize</a>, <a class="el" href="structLIBMTP__track__struct.html#a5e47593747628d03814941542ee33e78">LIBMTP_track_struct::filesize</a>, <a class="el" href="structLIBMTP__file__struct.html#af72d13c38d217c7f91b4db288a0edfc3">LIBMTP_file_struct::filetype</a>, <a class="el" href="structLIBMTP__track__struct.html#acfef436ce1505118ca6c24b91b8a1e30">LIBMTP_track_struct::filetype</a>, <a class="el" href="structLIBMTP__file__struct.html#aaf61e9bb66af366adbc1ea834ffcb459">LIBMTP_file_struct::item_id</a>, <a class="el" href="structLIBMTP__track__struct.html#a794e60bb22d9dd93b2f4cd7bb935f10b">LIBMTP_track_struct::item_id</a>, <a class="el" href="group__types.html#ga09a6cd06f954d3bf468e4d7b1c8a3c26">LIBMTP_FILETYPE_IS_TRACK</a>, <a class="el" href="group__files.html#gab2c26272deb5ba7a18644282ebc12782">LIBMTP_Send_File_From_Handler()</a>, <a class="el" href="group__tracks.html#ga0b7b558a8eda3d508775a80f9306597d">LIBMTP_Update_Track_Metadata()</a>, <a class="el" href="structLIBMTP__file__struct.html#a220976ae777e294a0001ce8d781aaed6">LIBMTP_file_struct::next</a>, <a class="el" href="structLIBMTP__mtpdevice__struct.html#aca6eb02fe46e8da41adb54e048176b42">LIBMTP_mtpdevice_struct::params</a>, <a class="el" href="structLIBMTP__file__struct.html#a726a522a0a49edbcde86e86f61bc3ae7">LIBMTP_file_struct::parent_id</a>, <a class="el" href="structLIBMTP__track__struct.html#a6b3aee8c78864cbf0559795f7301fa87">LIBMTP_track_struct::parent_id</a>, <a class="el" href="structLIBMTP__file__struct.html#aeaa79b7e20ce937ab6c80d52e4d4ffba">LIBMTP_file_struct::storage_id</a>, <a class="el" href="structLIBMTP__track__struct.html#a17f3721dfe5fe4b17d6cd8071f96fbda">LIBMTP_track_struct::storage_id</a>, and <a class="el" href="structLIBMTP__mtpdevice__struct.html#a5560f6638d9626ab26a2be48e9585ad1">LIBMTP_mtpdevice_struct::usbinfo</a>.</p>

</div>
</div>
<a class="anchor" id="gafe3fd955b9816b848f6b2e93e0bb5541"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int LIBMTP_Set_Track_Name </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__types.html#gac2e20fe8cf7ca4d2426e22865073db4f">LIBMTP_mtpdevice_t</a> *&#160;</td>
          <td class="paramname"><em>device</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__types.html#ga11ea8df2e635473592fc786085ff55b6">LIBMTP_track_t</a> *&#160;</td>
          <td class="paramname"><em>track</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>newname</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>This function renames a single track. This simply means that the PTP_OPC_ObjectFileName property is updated, if this is supported by the device.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">device</td><td>a pointer to the device that contains the file. </td></tr>
    <tr><td class="paramname">track</td><td>the track metadata of the track to rename. On success, the filename member is updated. Be aware, that this name can be different than newname depending of device restrictions. </td></tr>
    <tr><td class="paramname">newname</td><td>the new filename for this object. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>0 on success, any other value means failure. </dd></dl>

<p>References <a class="el" href="structLIBMTP__track__struct.html#a8b39e4ad45cb48fd0d3551a36d9a8aaf">LIBMTP_track_struct::filename</a>, <a class="el" href="structLIBMTP__track__struct.html#acfef436ce1505118ca6c24b91b8a1e30">LIBMTP_track_struct::filetype</a>, and <a class="el" href="structLIBMTP__track__struct.html#a794e60bb22d9dd93b2f4cd7bb935f10b">LIBMTP_track_struct::item_id</a>.</p>

</div>
</div>
<a class="anchor" id="ga384f34487a48ae10972fc968e199ab26"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int LIBMTP_Track_Exists </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__types.html#gac2e20fe8cf7ca4d2426e22865073db4f">LIBMTP_mtpdevice_t</a> *&#160;</td>
          <td class="paramname"><em>device</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint32_t const&#160;</td>
          <td class="paramname"><em>id</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Helper function. This indicates if a track exists on the device </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">device</td><td>a pointer to the device to get the track from. </td></tr>
    <tr><td class="paramname">id</td><td>the track ID of the track to retrieve. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>TRUE (!=0) if the track exists, FALSE (0) if not </dd></dl>

<p>References <a class="el" href="structLIBMTP__mtpdevice__struct.html#aca6eb02fe46e8da41adb54e048176b42">LIBMTP_mtpdevice_struct::params</a>.</p>

</div>
</div>
<a class="anchor" id="ga0b7b558a8eda3d508775a80f9306597d"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int LIBMTP_Update_Track_Metadata </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__types.html#gac2e20fe8cf7ca4d2426e22865073db4f">LIBMTP_mtpdevice_t</a> *&#160;</td>
          <td class="paramname"><em>device</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__types.html#ga11ea8df2e635473592fc786085ff55b6">LIBMTP_track_t</a> const *const&#160;</td>
          <td class="paramname"><em>metadata</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>This function updates the MTP track object metadata on a single file identified by an object ID. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">device</td><td>a pointer to the device to update the track metadata on. </td></tr>
    <tr><td class="paramname">metadata</td><td>a track metadata set to be written to the file. notice that the <code>track_id</code> field of the metadata structure must be correct so that the function can update the right file. If some properties of this metadata are set to NULL (strings) or 0 (numerical values) they will be discarded and the track will not be tagged with these blank values. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>0 on success, any other value means failure. If some or all of the properties fail to update we will still return success. On some devices (notably iRiver T30) properties that exist cannot be updated. </dd></dl>

<p>References <a class="el" href="structLIBMTP__track__struct.html#a92bbcc8b44bad148c85a3aa29280b755">LIBMTP_track_struct::album</a>, <a class="el" href="structLIBMTP__track__struct.html#ae0706099f555fa7a36d55f7d7afce45b">LIBMTP_track_struct::artist</a>, <a class="el" href="structLIBMTP__track__struct.html#abf4470ae0bb73a1ff662a7b74be3d43a">LIBMTP_track_struct::bitrate</a>, <a class="el" href="structLIBMTP__track__struct.html#a4578ce33a13ed7bd6a169736811c8870">LIBMTP_track_struct::bitratetype</a>, <a class="el" href="structLIBMTP__track__struct.html#a236eec386c4d543f32b22f09c0944ac1">LIBMTP_track_struct::composer</a>, <a class="el" href="structLIBMTP__track__struct.html#a513ced50dcbdd94ab70b8a09a0fba642">LIBMTP_track_struct::date</a>, <a class="el" href="structLIBMTP__track__struct.html#ab7e4e69d59136a12c1430189adae3036">LIBMTP_track_struct::duration</a>, <a class="el" href="structLIBMTP__track__struct.html#acfef436ce1505118ca6c24b91b8a1e30">LIBMTP_track_struct::filetype</a>, <a class="el" href="structLIBMTP__track__struct.html#a16770448a9abcca6486c2e2fe41dfb22">LIBMTP_track_struct::genre</a>, <a class="el" href="structLIBMTP__track__struct.html#a794e60bb22d9dd93b2f4cd7bb935f10b">LIBMTP_track_struct::item_id</a>, <a class="el" href="structLIBMTP__track__struct.html#a6047a81f7412260254c7d53d7549cacc">LIBMTP_track_struct::nochannels</a>, <a class="el" href="structLIBMTP__mtpdevice__struct.html#aca6eb02fe46e8da41adb54e048176b42">LIBMTP_mtpdevice_struct::params</a>, <a class="el" href="structLIBMTP__track__struct.html#ac7db02ac20f61325c53ab7a4cdb61446">LIBMTP_track_struct::rating</a>, <a class="el" href="structLIBMTP__track__struct.html#a28b244607fbc3aaf9dc716084f472a29">LIBMTP_track_struct::samplerate</a>, <a class="el" href="structLIBMTP__track__struct.html#a08f9a52cac093232f14543bbd87d586d">LIBMTP_track_struct::title</a>, <a class="el" href="structLIBMTP__track__struct.html#a83ee6e896a61af8c024665f2b3329011">LIBMTP_track_struct::tracknumber</a>, <a class="el" href="structLIBMTP__mtpdevice__struct.html#a5560f6638d9626ab26a2be48e9585ad1">LIBMTP_mtpdevice_struct::usbinfo</a>, <a class="el" href="structLIBMTP__track__struct.html#a83d2d2ebc1b1eec2fe6fe33108c0f4f9">LIBMTP_track_struct::usecount</a>, and <a class="el" href="structLIBMTP__track__struct.html#acce675a522afeaa8cefe3281427bc043">LIBMTP_track_struct::wavecodec</a>.</p>

<p>Referenced by <a class="el" href="group__tracks.html#ga982264bb96f5e90be2cba708346e8a1c">LIBMTP_Send_Track_From_File_Descriptor()</a>, and <a class="el" href="group__tracks.html#gad571c96d1d45dfb824b466da3715dccd">LIBMTP_Send_Track_From_Handler()</a>.</p>

</div>
</div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Fri Oct 18 2013 23:02:46 for libmtp by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.5
</small></address>
</body>
</html>