libmtp.h   libmtp.h 
/** /**
* \file libmtp.h * \file libmtp.h
* Interface to the Media Transfer Protocol library. * Interface to the Media Transfer Protocol library.
* *
* Copyright (C) 2005-2007 Linus Walleij <triad@df.lth.se> * Copyright (C) 2005-2008 Linus Walleij <triad@df.lth.se>
* Copyright (C) 2005-2008 Richard A. Low <richard@wentnet.com> * Copyright (C) 2005-2008 Richard A. Low <richard@wentnet.com>
* Copyright (C) 2007 Ted Bullock <tbullock@canada.com> * Copyright (C) 2007 Ted Bullock <tbullock@canada.com>
* Copyright (C) 2008 Florent Mertens <flomertens@gmail.com> * Copyright (C) 2008 Florent Mertens <flomertens@gmail.com>
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public * modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either * License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version. * version 2 of the License, or (at your option) any later version.
* *
* This library is distributed in the hope that it will be useful, * This library is distributed in the hope that it will be useful,
skipping to change at line 32 skipping to change at line 32
* Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
* Boston, MA 02111-1307, USA. * Boston, MA 02111-1307, USA.
* *
* <code> * <code>
* #include <libmtp.h> * #include <libmtp.h>
* </code> * </code>
*/ */
#ifndef LIBMTP_H_INCLUSION_GUARD #ifndef LIBMTP_H_INCLUSION_GUARD
#define LIBMTP_H_INCLUSION_GUARD #define LIBMTP_H_INCLUSION_GUARD
#define LIBMTP_VERSION 0.2.6.1 #define LIBMTP_VERSION 0.3.0
#define LIBMTP_VERSION_STRING "0.2.6.1" #define LIBMTP_VERSION_STRING "0.3.0"
/* This handles MSVC pecularities */ /* This handles MSVC pecularities */
#ifdef _MSC_VER #ifdef _MSC_VER
#include <windows.h> #include <windows.h>
#define __WIN32__ #define __WIN32__
#define snprintf _snprintf #define snprintf _snprintf
#define ssize_t SSIZE_T #define ssize_t SSIZE_T
#endif #endif
#include <stdio.h> #include <stdio.h>
skipping to change at line 112 skipping to change at line 112
LIBMTP_FILETYPE_M4A, LIBMTP_FILETYPE_M4A,
LIBMTP_FILETYPE_DOC, LIBMTP_FILETYPE_DOC,
LIBMTP_FILETYPE_XML, LIBMTP_FILETYPE_XML,
LIBMTP_FILETYPE_XLS, LIBMTP_FILETYPE_XLS,
LIBMTP_FILETYPE_PPT, LIBMTP_FILETYPE_PPT,
LIBMTP_FILETYPE_MHT, LIBMTP_FILETYPE_MHT,
LIBMTP_FILETYPE_JP2, LIBMTP_FILETYPE_JP2,
LIBMTP_FILETYPE_JPX, LIBMTP_FILETYPE_JPX,
LIBMTP_FILETYPE_UNKNOWN LIBMTP_FILETYPE_UNKNOWN
} LIBMTP_filetype_t; } LIBMTP_filetype_t;
/**
* Helpful macros to determine filetype properties
*/
#define LIBMTP_FILETYPE_IS_AUDIO(a)\
(a == LIBMTP_FILETYPE_WAV ||\
a == LIBMTP_FILETYPE_MP3 ||\
a == LIBMTP_FILETYPE_MP2 ||\
a == LIBMTP_FILETYPE_WMA ||\
a == LIBMTP_FILETYPE_OGG ||\
a == LIBMTP_FILETYPE_FLAC ||\
a == LIBMTP_FILETYPE_AAC ||\
a == LIBMTP_FILETYPE_M4A ||\
a == LIBMTP_FILETYPE_UNDEF_AUDIO)
#define LIBMTP_FILETYPE_IS_VIDEO(a)\
(a == LIBMTP_FILETYPE_WMV ||\
a == LIBMTP_FILETYPE_AVI ||\
a == LIBMTP_FILETYPE_MPEG ||\
a == LIBMTP_FILETYPE_UNDEF_VIDEO)
#define LIBMTP_FILETYPE_IS_AUDIOVIDEO(a)\
(a == LIBMTP_FILETYPE_MP4 ||\
a == LIBMTP_FILETYPE_ASF ||\
a == LIBMTP_FILETYPE_QT)
#define LIBMTP_FILETYPE_IS_TRACK(a)\
(LIBMTP_FILETYPE_IS_AUDIO(a) ||\
LIBMTP_FILETYPE_IS_VIDEO(a) ||\
LIBMTP_FILETYPE_IS_AUDIOVIDEO(a))
/** /**
* These are the numbered error codes. You can also * These are the numbered error codes. You can also
* get string representations for errors. * get string representations for errors.
*/ */
typedef enum { typedef enum {
LIBMTP_ERROR_NONE, LIBMTP_ERROR_NONE,
LIBMTP_ERROR_GENERAL, LIBMTP_ERROR_GENERAL,
LIBMTP_ERROR_PTP_LAYER, LIBMTP_ERROR_PTP_LAYER,
LIBMTP_ERROR_USB_LAYER, LIBMTP_ERROR_USB_LAYER,
LIBMTP_ERROR_MEMORY_ALLOCATION, LIBMTP_ERROR_MEMORY_ALLOCATION,
LIBMTP_ERROR_NO_DEVICE_ATTACHED, LIBMTP_ERROR_NO_DEVICE_ATTACHED,
LIBMTP_ERROR_STORAGE_FULL, LIBMTP_ERROR_STORAGE_FULL,
LIBMTP_ERROR_CONNECTING, LIBMTP_ERROR_CONNECTING,
LIBMTP_ERROR_CANCELLED LIBMTP_ERROR_CANCELLED
} LIBMTP_error_number_t; } LIBMTP_error_number_t;
typedef struct LIBMTP_device_entry_struct LIBMTP_device_entry_t; /**< @see LIBMTP_device_entry_struct */ typedef struct LIBMTP_device_entry_struct LIBMTP_device_entry_t; /**< @see LIBMTP_device_entry_struct */
typedef struct LIBMTP_raw_device_struct LIBMTP_raw_device_t; /**< @see LIBM TP_raw_device_struct */
typedef struct LIBMTP_error_struct LIBMTP_error_t; /**< @see LIBMTP_error_s truct */ typedef struct LIBMTP_error_struct LIBMTP_error_t; /**< @see LIBMTP_error_s truct */
typedef struct LIBMTP_mtpdevice_struct LIBMTP_mtpdevice_t; /**< @see LIBMTP _mtpdevice_struct */ typedef struct LIBMTP_mtpdevice_struct LIBMTP_mtpdevice_t; /**< @see LIBMTP _mtpdevice_struct */
typedef struct LIBMTP_file_struct LIBMTP_file_t; /**< @see LIBMTP_file_stru ct */ typedef struct LIBMTP_file_struct LIBMTP_file_t; /**< @see LIBMTP_file_stru ct */
typedef struct LIBMTP_track_struct LIBMTP_track_t; /**< @see LIBMTP_track_s truct */ typedef struct LIBMTP_track_struct LIBMTP_track_t; /**< @see LIBMTP_track_s truct */
typedef struct LIBMTP_playlist_struct LIBMTP_playlist_t; /**< @see LIBMTP_p laylist_struct */ typedef struct LIBMTP_playlist_struct LIBMTP_playlist_t; /**< @see LIBMTP_p laylist_struct */
typedef struct LIBMTP_album_struct LIBMTP_album_t; /**< @see LIBMTP_album_s truct */ typedef struct LIBMTP_album_struct LIBMTP_album_t; /**< @see LIBMTP_album_s truct */
typedef struct LIBMTP_folder_struct LIBMTP_folder_t; /**< @see LIBMTP_folde r_t */ typedef struct LIBMTP_folder_struct LIBMTP_folder_t; /**< @see LIBMTP_folde r_t */
typedef struct LIBMTP_object_struct LIBMTP_object_t; /**< @see LIBMTP_objec t_t */ typedef struct LIBMTP_object_struct LIBMTP_object_t; /**< @see LIBMTP_objec t_t */
typedef struct LIBMTP_filesampledata_struct LIBMTP_filesampledata_t; /**< @ see LIBMTP_filesample_t */ typedef struct LIBMTP_filesampledata_struct LIBMTP_filesampledata_t; /**< @ see LIBMTP_filesample_t */
typedef struct LIBMTP_devicestorage_struct LIBMTP_devicestorage_t; /**< @se e LIBMTP_devicestorage_t */ typedef struct LIBMTP_devicestorage_struct LIBMTP_devicestorage_t; /**< @se e LIBMTP_devicestorage_t */
skipping to change at line 170 skipping to change at line 199
*/ */
struct LIBMTP_device_entry_struct { struct LIBMTP_device_entry_struct {
char *vendor; /**< The vendor of this device */ char *vendor; /**< The vendor of this device */
uint16_t vendor_id; /**< Vendor ID for this device */ uint16_t vendor_id; /**< Vendor ID for this device */
char *product; /**< The product name of this device */ char *product; /**< The product name of this device */
uint16_t product_id; /**< Product ID for this device */ uint16_t product_id; /**< Product ID for this device */
uint32_t device_flags; /**< Bugs, device specifics etc */ uint32_t device_flags; /**< Bugs, device specifics etc */
}; };
/** /**
* A data structure to hold a raw MTP device connected
* to the bus.
*/
struct LIBMTP_raw_device_struct {
LIBMTP_device_entry_t device_entry; /**< The device entry for this raw de
vice */
uint32_t bus_location; /**< Location of the bus, if device available */
uint8_t devnum; /**< Device number on the bus, if device available */
};
/**
* A data structure to hold errors from the library. * A data structure to hold errors from the library.
*/ */
struct LIBMTP_error_struct { struct LIBMTP_error_struct {
LIBMTP_error_number_t errornumber; LIBMTP_error_number_t errornumber;
char *error_text; char *error_text;
LIBMTP_error_t *next; LIBMTP_error_t *next;
}; };
/** /**
* Main MTP device object struct * Main MTP device object struct
skipping to change at line 200 skipping to change at line 239
void *params; void *params;
/** /**
* USB device for this device, must be cast into * USB device for this device, must be cast into
* \c (PTP_USB*) before internal use. * \c (PTP_USB*) before internal use.
*/ */
void *usbinfo; void *usbinfo;
/** /**
* The storage for this device, do not use strings in here without * The storage for this device, do not use strings in here without
* copying them first, and beware that this list may be rebuilt at * copying them first, and beware that this list may be rebuilt at
* any time. * any time.
* @see LIBMTP_Get_Storage()
*/ */
LIBMTP_devicestorage_t *storage; LIBMTP_devicestorage_t *storage;
/** /**
* The error stack. This shall be handled using the error getting * The error stack. This shall be handled using the error getting
* and clearing functions, not by dereferencing this list. * and clearing functions, not by dereferencing this list.
*/ */
LIBMTP_error_t *errorstack; LIBMTP_error_t *errorstack;
/** The maximum battery level for this device */ /** The maximum battery level for this device */
uint8_t maximum_battery_level; uint8_t maximum_battery_level;
/** Default music folder */ /** Default music folder */
skipping to change at line 238 skipping to change at line 278
/** Pointer to next device in linked list; NULL if this is the last devic e */ /** Pointer to next device in linked list; NULL if this is the last devic e */
LIBMTP_mtpdevice_t *next; LIBMTP_mtpdevice_t *next;
}; };
/** /**
* MTP file struct * MTP file struct
*/ */
struct LIBMTP_file_struct { struct LIBMTP_file_struct {
uint32_t item_id; /**< Unique item ID */ uint32_t item_id; /**< Unique item ID */
uint32_t parent_id; /**< ID of parent folder */ uint32_t parent_id; /**< ID of parent folder */
uint32_t storage_id; /**< ID of storage holding this file */
char *filename; /**< Filename of this file */ char *filename; /**< Filename of this file */
uint64_t filesize; /**< Size of file in bytes */ uint64_t filesize; /**< Size of file in bytes */
LIBMTP_filetype_t filetype; /**< Filetype used for the current file */ LIBMTP_filetype_t filetype; /**< Filetype used for the current file */
LIBMTP_file_t *next; /**< Next file in list or NULL if last file */ LIBMTP_file_t *next; /**< Next file in list or NULL if last file */
}; };
/** /**
* MTP track struct * MTP track struct
*/ */
struct LIBMTP_track_struct { struct LIBMTP_track_struct {
uint32_t item_id; /**< Unique item ID */ uint32_t item_id; /**< Unique item ID */
uint32_t parent_id; /**< ID of parent folder */ uint32_t parent_id; /**< ID of parent folder */
uint32_t storage_id; /**< ID of storage holding this track */
char *title; /**< Track title */ char *title; /**< Track title */
char *artist; /**< Name of recording artist */ char *artist; /**< Name of recording artist */
char *composer; /**< Name of recording composer */
char *genre; /**< Genre name for track */ char *genre; /**< Genre name for track */
char *album; /**< Album name for track */ char *album; /**< Album name for track */
char *date; /**< Date of original recording as a string */ char *date; /**< Date of original recording as a string */
char *filename; /**< Original filename of this track */ char *filename; /**< Original filename of this track */
uint16_t tracknumber; /**< Track number (in sequence on recording) */ uint16_t tracknumber; /**< Track number (in sequence on recording) */
uint32_t duration; /**< Duration in milliseconds */ uint32_t duration; /**< Duration in milliseconds */
uint32_t samplerate; /**< Sample rate of original file, min 0x1f80 max 0x bb80 */ uint32_t samplerate; /**< Sample rate of original file, min 0x1f80 max 0x bb80 */
uint16_t nochannels; /**< Number of channels in this recording 0 = unknow n, 1 or 2 */ uint16_t nochannels; /**< Number of channels in this recording 0 = unknow n, 1 or 2 */
uint32_t wavecodec; /**< FourCC wave codec name */ uint32_t wavecodec; /**< FourCC wave codec name */
uint32_t bitrate; /**< (Average) bitrate for this file min=1 max=0x16e360 */ uint32_t bitrate; /**< (Average) bitrate for this file min=1 max=0x16e360 */
skipping to change at line 275 skipping to change at line 318
uint64_t filesize; /**< Size of track file in bytes */ uint64_t filesize; /**< Size of track file in bytes */
LIBMTP_filetype_t filetype; /**< Filetype used for the current track */ LIBMTP_filetype_t filetype; /**< Filetype used for the current track */
LIBMTP_track_t *next; /**< Next track in list or NULL if last track */ LIBMTP_track_t *next; /**< Next track in list or NULL if last track */
}; };
/** /**
* MTP Playlist structure * MTP Playlist structure
*/ */
struct LIBMTP_playlist_struct { struct LIBMTP_playlist_struct {
uint32_t playlist_id; /**< Unique playlist ID */ uint32_t playlist_id; /**< Unique playlist ID */
uint32_t parent_id; /**< ID of parent folder */
uint32_t storage_id; /**< ID of storage holding this playlist */
char *name; /**< Name of playlist */ char *name; /**< Name of playlist */
uint32_t *tracks; /**< The tracks in this playlist */ uint32_t *tracks; /**< The tracks in this playlist */
uint32_t no_tracks; /**< The number of tracks in this playlist */ uint32_t no_tracks; /**< The number of tracks in this playlist */
LIBMTP_playlist_t *next; /**< Next playlist or NULL if last playlist */ LIBMTP_playlist_t *next; /**< Next playlist or NULL if last playlist */
}; };
/** /**
* MTP Album structure * MTP Album structure
*/ */
struct LIBMTP_album_struct { struct LIBMTP_album_struct {
uint32_t album_id; /**< Unique playlist ID */ uint32_t album_id; /**< Unique playlist ID */
uint32_t parent_id; /**< ID of parent folder */
uint32_t storage_id; /**< ID of storage holding this album */
char *name; /**< Name of album */ char *name; /**< Name of album */
char *artist; /**< Name of album artist */ char *artist; /**< Name of album artist */
char *composer; /**< Name of recording composer */
char *genre; /**< Genre of album */ char *genre; /**< Genre of album */
uint32_t *tracks; /**< The tracks in this album */ uint32_t *tracks; /**< The tracks in this album */
uint32_t no_tracks; /**< The number of tracks in this album */ uint32_t no_tracks; /**< The number of tracks in this album */
LIBMTP_album_t *next; /**< Next album or NULL if last album */ LIBMTP_album_t *next; /**< Next album or NULL if last album */
}; };
/** /**
* MTP Folder structure * MTP Folder structure
*/ */
struct LIBMTP_folder_struct { struct LIBMTP_folder_struct {
uint32_t folder_id; /**< Unique folder ID */ uint32_t folder_id; /**< Unique folder ID */
uint32_t parent_id; /**< ID of parent folder */ uint32_t parent_id; /**< ID of parent folder */
uint32_t storage_id; /**< ID of storage holding this folder */
char *name; /**< Name of folder */ char *name; /**< Name of folder */
LIBMTP_folder_t *sibling; /**< Next folder at same level or NULL if no mo re */ LIBMTP_folder_t *sibling; /**< Next folder at same level or NULL if no mo re */
LIBMTP_folder_t *child; /**< Child folder or NULL if no children */ LIBMTP_folder_t *child; /**< Child folder or NULL if no children */
}; };
/** /**
* LIBMTP Object RepresentativeSampleData Structure * LIBMTP Object RepresentativeSampleData Structure
*/ */
struct LIBMTP_filesampledata_struct { struct LIBMTP_filesampledata_struct {
uint32_t width; /**< Width of sample if it is an image */ uint32_t width; /**< Width of sample if it is an image */
skipping to change at line 352 skipping to change at line 401
* @defgroup internals The libmtp internals API. * @defgroup internals The libmtp internals API.
* @{ * @{
*/ */
void LIBMTP_Init(void); void LIBMTP_Init(void);
int LIBMTP_Get_Supported_Devices_List(LIBMTP_device_entry_t ** const, int * const); int LIBMTP_Get_Supported_Devices_List(LIBMTP_device_entry_t ** const, int * const);
/** /**
* @} * @}
* @defgroup basic The basic device management API. * @defgroup basic The basic device management API.
* @{ * @{
*/ */
int LIBMTP_Detect_Descriptor(uint16_t*,uint16_t*); LIBMTP_error_number_t LIBMTP_Detect_Raw_Devices(LIBMTP_raw_device_t **, int
*);
LIBMTP_mtpdevice_t *LIBMTP_Open_Raw_Device(LIBMTP_raw_device_t *);
/* Begin old, legacy interface */
LIBMTP_mtpdevice_t *LIBMTP_Get_First_Device(void); LIBMTP_mtpdevice_t *LIBMTP_Get_First_Device(void);
LIBMTP_error_number_t LIBMTP_Get_Connected_Devices(LIBMTP_mtpdevice_t **); LIBMTP_error_number_t LIBMTP_Get_Connected_Devices(LIBMTP_mtpdevice_t **);
uint32_t LIBMTP_Number_Devices_In_List(LIBMTP_mtpdevice_t *); uint32_t LIBMTP_Number_Devices_In_List(LIBMTP_mtpdevice_t *);
void LIBMTP_Release_Device_List(LIBMTP_mtpdevice_t*); void LIBMTP_Release_Device_List(LIBMTP_mtpdevice_t*);
/* End old, legacy interface */
void LIBMTP_Release_Device(LIBMTP_mtpdevice_t*); void LIBMTP_Release_Device(LIBMTP_mtpdevice_t*);
void LIBMTP_Dump_Device_Info(LIBMTP_mtpdevice_t*); void LIBMTP_Dump_Device_Info(LIBMTP_mtpdevice_t*);
int LIBMTP_Reset_Device(LIBMTP_mtpdevice_t*); int LIBMTP_Reset_Device(LIBMTP_mtpdevice_t*);
char *LIBMTP_Get_Manufacturername(LIBMTP_mtpdevice_t*); char *LIBMTP_Get_Manufacturername(LIBMTP_mtpdevice_t*);
char *LIBMTP_Get_Modelname(LIBMTP_mtpdevice_t*); char *LIBMTP_Get_Modelname(LIBMTP_mtpdevice_t*);
char *LIBMTP_Get_Serialnumber(LIBMTP_mtpdevice_t*); char *LIBMTP_Get_Serialnumber(LIBMTP_mtpdevice_t*);
char *LIBMTP_Get_Deviceversion(LIBMTP_mtpdevice_t*); char *LIBMTP_Get_Deviceversion(LIBMTP_mtpdevice_t*);
char *LIBMTP_Get_Friendlyname(LIBMTP_mtpdevice_t*); char *LIBMTP_Get_Friendlyname(LIBMTP_mtpdevice_t*);
int LIBMTP_Set_Friendlyname(LIBMTP_mtpdevice_t*, char const * const); int LIBMTP_Set_Friendlyname(LIBMTP_mtpdevice_t*, char const * const);
char *LIBMTP_Get_Syncpartner(LIBMTP_mtpdevice_t*); char *LIBMTP_Get_Syncpartner(LIBMTP_mtpdevice_t*);
skipping to change at line 403 skipping to change at line 455
LIBMTP_file_t *LIBMTP_Get_Filelisting(LIBMTP_mtpdevice_t *); LIBMTP_file_t *LIBMTP_Get_Filelisting(LIBMTP_mtpdevice_t *);
LIBMTP_file_t *LIBMTP_Get_Filelisting_With_Callback(LIBMTP_mtpdevice_t *, LIBMTP_file_t *LIBMTP_Get_Filelisting_With_Callback(LIBMTP_mtpdevice_t *,
LIBMTP_progressfunc_t const, void const * const); LIBMTP_progressfunc_t const, void const * const);
LIBMTP_file_t *LIBMTP_Get_Filemetadata(LIBMTP_mtpdevice_t *, uint32_t const ); LIBMTP_file_t *LIBMTP_Get_Filemetadata(LIBMTP_mtpdevice_t *, uint32_t const );
int LIBMTP_Get_File_To_File(LIBMTP_mtpdevice_t*, uint32_t, char const * con st, int LIBMTP_Get_File_To_File(LIBMTP_mtpdevice_t*, uint32_t, char const * con st,
LIBMTP_progressfunc_t const, void const * const); LIBMTP_progressfunc_t const, void const * const);
int LIBMTP_Get_File_To_File_Descriptor(LIBMTP_mtpdevice_t*, uint32_t const, int const, int LIBMTP_Get_File_To_File_Descriptor(LIBMTP_mtpdevice_t*, uint32_t const, int const,
LIBMTP_progressfunc_t const, void const * const); LIBMTP_progressfunc_t const, void const * const);
int LIBMTP_Send_File_From_File(LIBMTP_mtpdevice_t *, char const * const, int LIBMTP_Send_File_From_File(LIBMTP_mtpdevice_t *, char const * const,
LIBMTP_file_t * const, LIBMTP_progressfunc_t const, LIBMTP_file_t * const, LIBMTP_progressfunc_t const,
void const * const, uint32_t const); void const * const);
int LIBMTP_Send_File_From_File_Descriptor(LIBMTP_mtpdevice_t *, int const, int LIBMTP_Send_File_From_File_Descriptor(LIBMTP_mtpdevice_t *, int const,
LIBMTP_file_t * const, LIBMTP_progressfunc_t const, LIBMTP_file_t * const, LIBMTP_progressfunc_t const,
void const * const, uint32_t const); void const * const);
LIBMTP_filesampledata_t *LIBMTP_new_filesampledata_t(void); LIBMTP_filesampledata_t *LIBMTP_new_filesampledata_t(void);
void LIBMTP_destroy_filesampledata_t(LIBMTP_filesampledata_t *); void LIBMTP_destroy_filesampledata_t(LIBMTP_filesampledata_t *);
int LIBMTP_Get_Representative_Sample_Format(LIBMTP_mtpdevice_t *, int LIBMTP_Get_Representative_Sample_Format(LIBMTP_mtpdevice_t *,
LIBMTP_filetype_t const, LIBMTP_filetype_t const,
LIBMTP_filesampledata_t **); LIBMTP_filesampledata_t **);
int LIBMTP_Send_Representative_Sample(LIBMTP_mtpdevice_t *, uint32_t const, int LIBMTP_Send_Representative_Sample(LIBMTP_mtpdevice_t *, uint32_t const,
LIBMTP_filesampledata_t *); LIBMTP_filesampledata_t *);
int LIBMTP_Get_Representative_Sample(LIBMTP_mtpdevice_t *, uint32_t const, int LIBMTP_Get_Representative_Sample(LIBMTP_mtpdevice_t *, uint32_t const,
LIBMTP_filesampledata_t *); LIBMTP_filesampledata_t *);
skipping to change at line 435 skipping to change at line 487
LIBMTP_track_t *LIBMTP_Get_Tracklisting_With_Callback(LIBMTP_mtpdevice_t*, LIBMTP_track_t *LIBMTP_Get_Tracklisting_With_Callback(LIBMTP_mtpdevice_t*,
LIBMTP_progressfunc_t const, void const * const); LIBMTP_progressfunc_t const, void const * const);
LIBMTP_track_t *LIBMTP_Get_Trackmetadata(LIBMTP_mtpdevice_t*, uint32_t cons t); LIBMTP_track_t *LIBMTP_Get_Trackmetadata(LIBMTP_mtpdevice_t*, uint32_t cons t);
int LIBMTP_Get_Track_To_File(LIBMTP_mtpdevice_t*, uint32_t, char const * co nst, int LIBMTP_Get_Track_To_File(LIBMTP_mtpdevice_t*, uint32_t, char const * co nst,
LIBMTP_progressfunc_t const, void const * const); LIBMTP_progressfunc_t const, void const * const);
int LIBMTP_Get_Track_To_File_Descriptor(LIBMTP_mtpdevice_t*, uint32_t const , int const, int LIBMTP_Get_Track_To_File_Descriptor(LIBMTP_mtpdevice_t*, uint32_t const , int const,
LIBMTP_progressfunc_t const, void const * const); LIBMTP_progressfunc_t const, void const * const);
int LIBMTP_Send_Track_From_File(LIBMTP_mtpdevice_t *, int LIBMTP_Send_Track_From_File(LIBMTP_mtpdevice_t *,
char const * const, LIBMTP_track_t * const, char const * const, LIBMTP_track_t * const,
LIBMTP_progressfunc_t const, LIBMTP_progressfunc_t const,
void const * const, uint32_t const); void const * const);
int LIBMTP_Send_Track_From_File_Descriptor(LIBMTP_mtpdevice_t *, int LIBMTP_Send_Track_From_File_Descriptor(LIBMTP_mtpdevice_t *,
int const, LIBMTP_track_t * const, int const, LIBMTP_track_t * const,
LIBMTP_progressfunc_t const, LIBMTP_progressfunc_t const,
void const * const, uint32_t const); void const * const);
int LIBMTP_Update_Track_Metadata(LIBMTP_mtpdevice_t *, int LIBMTP_Update_Track_Metadata(LIBMTP_mtpdevice_t *,
LIBMTP_track_t const * const); LIBMTP_track_t const * const);
int LIBMTP_Track_Exists(LIBMTP_mtpdevice_t *, uint32_t); int LIBMTP_Track_Exists(LIBMTP_mtpdevice_t *, uint32_t);
/** @} */ /** @} */
/** /**
* @} * @}
* @defgroup folders The folder management API. * @defgroup folders The folder management API.
* @{ * @{
*/ */
LIBMTP_folder_t *LIBMTP_new_folder_t(void); LIBMTP_folder_t *LIBMTP_new_folder_t(void);
void LIBMTP_destroy_folder_t(LIBMTP_folder_t*); void LIBMTP_destroy_folder_t(LIBMTP_folder_t*);
LIBMTP_folder_t *LIBMTP_Get_Folder_List(LIBMTP_mtpdevice_t*); LIBMTP_folder_t *LIBMTP_Get_Folder_List(LIBMTP_mtpdevice_t*);
LIBMTP_folder_t *LIBMTP_Find_Folder(LIBMTP_folder_t*, uint32_t const); LIBMTP_folder_t *LIBMTP_Find_Folder(LIBMTP_folder_t*, uint32_t const);
uint32_t LIBMTP_Create_Folder(LIBMTP_mtpdevice_t*, char *, uint32_t); uint32_t LIBMTP_Create_Folder(LIBMTP_mtpdevice_t*, char *, uint32_t, uint32 _t);
/** @} */ /** @} */
/** /**
* @} * @}
* @defgroup playlists The audio/video playlist management API. * @defgroup playlists The audio/video playlist management API.
* @{ * @{
*/ */
LIBMTP_playlist_t *LIBMTP_new_playlist_t(void); LIBMTP_playlist_t *LIBMTP_new_playlist_t(void);
void LIBMTP_destroy_playlist_t(LIBMTP_playlist_t *); void LIBMTP_destroy_playlist_t(LIBMTP_playlist_t *);
LIBMTP_playlist_t *LIBMTP_Get_Playlist_List(LIBMTP_mtpdevice_t *); LIBMTP_playlist_t *LIBMTP_Get_Playlist_List(LIBMTP_mtpdevice_t *);
LIBMTP_playlist_t *LIBMTP_Get_Playlist(LIBMTP_mtpdevice_t *, uint32_t const ); LIBMTP_playlist_t *LIBMTP_Get_Playlist(LIBMTP_mtpdevice_t *, uint32_t const );
int LIBMTP_Create_New_Playlist(LIBMTP_mtpdevice_t *, LIBMTP_playlist_t * co nst, uint32_t const); int LIBMTP_Create_New_Playlist(LIBMTP_mtpdevice_t *, LIBMTP_playlist_t * co nst);
int LIBMTP_Update_Playlist(LIBMTP_mtpdevice_t *, LIBMTP_playlist_t const * const); int LIBMTP_Update_Playlist(LIBMTP_mtpdevice_t *, LIBMTP_playlist_t const * const);
/** /**
* @} * @}
* @defgroup albums The audio/video album management API. * @defgroup albums The audio/video album management API.
* @{ * @{
*/ */
LIBMTP_album_t *LIBMTP_new_album_t(void); LIBMTP_album_t *LIBMTP_new_album_t(void);
void LIBMTP_destroy_album_t(LIBMTP_album_t *); void LIBMTP_destroy_album_t(LIBMTP_album_t *);
LIBMTP_album_t *LIBMTP_Get_Album_List(LIBMTP_mtpdevice_t *); LIBMTP_album_t *LIBMTP_Get_Album_List(LIBMTP_mtpdevice_t *);
LIBMTP_album_t *LIBMTP_Get_Album(LIBMTP_mtpdevice_t *, uint32_t const); LIBMTP_album_t *LIBMTP_Get_Album(LIBMTP_mtpdevice_t *, uint32_t const);
int LIBMTP_Create_New_Album(LIBMTP_mtpdevice_t *, LIBMTP_album_t * const, u int32_t const); int LIBMTP_Create_New_Album(LIBMTP_mtpdevice_t *, LIBMTP_album_t * const);
int LIBMTP_Update_Album(LIBMTP_mtpdevice_t *, LIBMTP_album_t const * const) ; int LIBMTP_Update_Album(LIBMTP_mtpdevice_t *, LIBMTP_album_t const * const) ;
/** /**
* @} * @}
* @defgroup objects The object management API. * @defgroup objects The object management API.
* @{ * @{
*/ */
int LIBMTP_Delete_Object(LIBMTP_mtpdevice_t *, uint32_t); int LIBMTP_Delete_Object(LIBMTP_mtpdevice_t *, uint32_t);
int LIBMTP_Set_Object_Filename(LIBMTP_mtpdevice_t *, uint32_t , char *); int LIBMTP_Set_Object_Filename(LIBMTP_mtpdevice_t *, uint32_t , char *);
 End of changes. 22 change blocks. 
11 lines changed or deleted 65 lines changed or added

This html diff was produced by rfcdiff 1.41. The latest version is available from http://tools.ietf.org/tools/rfcdiff/