---
name: "mtp_libmtp.h"
section: "3"
platform: "linux"
package: "libmtp-doc"
version: "1.1.22-1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/mtp_libmtp.h"
---

# mtp\_libmtp.h(3)

## NAME

libmtp -

## SYNOPSIS

`#include <sys/time.h>`\
 `#include <stdio.h>`\
 `#include <stdint.h>`\
 `#include <time.h>`\

### Data Structures

struct **LIBMTP\_device\_entry\_struct**\
 struct **LIBMTP\_raw\_device\_struct**\
 struct **LIBMTP\_error\_struct**\
 struct **LIBMTP\_allowed\_values\_struct**\
 struct **LIBMTP\_device\_extension\_struct**\
 struct **LIBMTP\_mtpdevice\_struct**\
 struct **LIBMTP\_file\_struct**\
 struct **LIBMTP\_track\_struct**\
 struct **LIBMTP\_playlist\_struct**\
 struct **LIBMTP\_album\_struct**\
 struct **LIBMTP\_folder\_struct**\
 struct **LIBMTP\_filesampledata\_struct**\
 struct **LIBMTP\_devicestorage\_struct**\

### Macros

\#define **LIBMTP\_VERSION**   1.1.22\
 \#define **LIBMTP\_VERSION\_STRING**   '1.1.22'\
 \#define **LIBMTP\_DEBUG\_NONE**   0x00\
 \#define **LIBMTP\_DEBUG\_PTP**   0x01\
 \#define **LIBMTP\_DEBUG\_PLST**   0x02\
 \#define **LIBMTP\_DEBUG\_USB**   0x04\
 \#define **LIBMTP\_DEBUG\_DATA**   0x08\
 \#define **LIBMTP\_DEBUG\_ALL**   0xFF\
 \#define **LIBMTP\_FILETYPE\_IS\_AUDIO**(a)\
 \#define **LIBMTP\_FILETYPE\_IS\_VIDEO**(a)\
 \#define **LIBMTP\_FILETYPE\_IS\_AUDIOVIDEO**(a)\
 \#define **LIBMTP\_FILETYPE\_IS\_TRACK**(a)\
 \#define **LIBMTP\_FILETYPE\_IS\_IMAGE**(a)\
 \#define **LIBMTP\_FILETYPE\_IS\_ADDRESSBOOK**(a)\
 \#define **LIBMTP\_FILETYPE\_IS\_CALENDAR**(a)\
 \#define **LIBMTP\_HANDLER\_RETURN\_OK**   0\
 \#define **LIBMTP\_HANDLER\_RETURN\_ERROR**   1\
 \#define **LIBMTP\_HANDLER\_RETURN\_CANCEL**   2\
 \#define **LIBMTP\_STORAGE\_SORTBY\_NOTSORTED**   0\
 \#define **LIBMTP\_STORAGE\_SORTBY\_FREESPACE**   1\
 \#define **LIBMTP\_STORAGE\_SORTBY\_MAXSPACE**   2\
 \#define **LIBMTP\_FILES\_AND\_FOLDERS\_ROOT**   0xffffffff\

### Typedefs

typedef struct **LIBMTP\_device\_entry\_struct** **LIBMTP\_device\_entry\_t**\
 typedef struct **LIBMTP\_raw\_device\_struct** **LIBMTP\_raw\_device\_t**\
 typedef struct **LIBMTP\_error\_struct** **LIBMTP\_error\_t**\
 typedef struct **LIBMTP\_allowed\_values\_struct** **LIBMTP\_allowed\_values\_t**\
 typedef struct **LIBMTP\_device\_extension\_struct** **LIBMTP\_device\_extension\_t**\
 typedef struct **LIBMTP\_mtpdevice\_struct** **LIBMTP\_mtpdevice\_t**\
 typedef struct **LIBMTP\_file\_struct** **LIBMTP\_file\_t**\
 typedef struct **LIBMTP\_track\_struct** **LIBMTP\_track\_t**\
 typedef struct **LIBMTP\_playlist\_struct** **LIBMTP\_playlist\_t**\
 typedef struct **LIBMTP\_album\_struct** **LIBMTP\_album\_t**\
 typedef struct **LIBMTP\_folder\_struct** **LIBMTP\_folder\_t**\
 typedef struct **LIBMTP\_filesampledata\_struct** **LIBMTP\_filesampledata\_t**\
 typedef struct **LIBMTP\_devicestorage\_struct** **LIBMTP\_devicestorage\_t**\
 typedef int(\* **LIBMTP\_progressfunc\_t**) (uint64\_t const sent, uint64\_t const total, void const \*const data)\
 typedef uint16\_t(\* **MTPDataGetFunc**) (void \*params, void \*priv, uint32\_t wantlen, unsigned char \*data, uint32\_t \*gotlen)\
 typedef uint16\_t(\* **MTPDataPutFunc**) (void \*params, void \*priv, uint32\_t sendlen, unsigned char \*data, uint32\_t \*putlen)\
 typedef enum **LIBMTP\_event\_enum** **LIBMTP\_event\_t**\
 typedef void(\* **LIBMTP\_event\_cb\_fn**) (int, LIBMTP\_event\_t, uint32\_t, void \*)\

### Enumerations

enum **LIBMTP\_filetype\_t** { **LIBMTP\_FILETYPE\_FOLDER**, **LIBMTP\_FILETYPE\_WAV**, **LIBMTP\_FILETYPE\_MP3**, **LIBMTP\_FILETYPE\_WMA**, **LIBMTP\_FILETYPE\_OGG**, **LIBMTP\_FILETYPE\_AUDIBLE**, **LIBMTP\_FILETYPE\_MP4**, **LIBMTP\_FILETYPE\_UNDEF\_AUDIO**, **LIBMTP\_FILETYPE\_WMV**, **LIBMTP\_FILETYPE\_AVI**, **LIBMTP\_FILETYPE\_MPEG**, **LIBMTP\_FILETYPE\_ASF**, **LIBMTP\_FILETYPE\_QT**, **LIBMTP\_FILETYPE\_UNDEF\_VIDEO**, **LIBMTP\_FILETYPE\_JPEG**, **LIBMTP\_FILETYPE\_JFIF**, **LIBMTP\_FILETYPE\_TIFF**, **LIBMTP\_FILETYPE\_BMP**, **LIBMTP\_FILETYPE\_GIF**, **LIBMTP\_FILETYPE\_PICT**, **LIBMTP\_FILETYPE\_PNG**, **LIBMTP\_FILETYPE\_VCALENDAR1**, **LIBMTP\_FILETYPE\_VCALENDAR2**, **LIBMTP\_FILETYPE\_VCARD2**, **LIBMTP\_FILETYPE\_VCARD3**, **LIBMTP\_FILETYPE\_WINDOWSIMAGEFORMAT**, **LIBMTP\_FILETYPE\_WINEXEC**, **LIBMTP\_FILETYPE\_TEXT**, **LIBMTP\_FILETYPE\_HTML**, **LIBMTP\_FILETYPE\_FIRMWARE**, **LIBMTP\_FILETYPE\_AAC**, **LIBMTP\_FILETYPE\_MEDIACARD**, **LIBMTP\_FILETYPE\_FLAC**, **LIBMTP\_FILETYPE\_MP2**, **LIBMTP\_FILETYPE\_M4A**, **LIBMTP\_FILETYPE\_DOC**, **LIBMTP\_FILETYPE\_XML**, **LIBMTP\_FILETYPE\_XLS**, **LIBMTP\_FILETYPE\_PPT**, **LIBMTP\_FILETYPE\_MHT**, **LIBMTP\_FILETYPE\_JP2**, **LIBMTP\_FILETYPE\_JPX**, **LIBMTP\_FILETYPE\_ALBUM**, **LIBMTP\_FILETYPE\_PLAYLIST**, **LIBMTP\_FILETYPE\_UNKNOWN** }\
 enum **LIBMTP\_property\_t** { **LIBMTP\_PROPERTY\_StorageID**, **LIBMTP\_PROPERTY\_ObjectFormat**, **LIBMTP\_PROPERTY\_ProtectionStatus**, **LIBMTP\_PROPERTY\_ObjectSize**, **LIBMTP\_PROPERTY\_AssociationType**, **LIBMTP\_PROPERTY\_AssociationDesc**, **LIBMTP\_PROPERTY\_ObjectFileName**, **LIBMTP\_PROPERTY\_DateCreated**, **LIBMTP\_PROPERTY\_DateModified**, **LIBMTP\_PROPERTY\_Keywords**, **LIBMTP\_PROPERTY\_ParentObject**, **LIBMTP\_PROPERTY\_AllowedFolderContents**, **LIBMTP\_PROPERTY\_Hidden**, **LIBMTP\_PROPERTY\_SystemObject**, **LIBMTP\_PROPERTY\_PersistantUniqueObjectIdentifier**, **LIBMTP\_PROPERTY\_SyncID**, **LIBMTP\_PROPERTY\_PropertyBag**, **LIBMTP\_PROPERTY\_Name**, **LIBMTP\_PROPERTY\_CreatedBy**, **LIBMTP\_PROPERTY\_Artist**, **LIBMTP\_PROPERTY\_DateAuthored**, **LIBMTP\_PROPERTY\_Description**, **LIBMTP\_PROPERTY\_URLReference**, **LIBMTP\_PROPERTY\_LanguageLocale**, **LIBMTP\_PROPERTY\_CopyrightInformation**, **LIBMTP\_PROPERTY\_Source**, **LIBMTP\_PROPERTY\_OriginLocation**, **LIBMTP\_PROPERTY\_DateAdded**, **LIBMTP\_PROPERTY\_NonConsumable**, **LIBMTP\_PROPERTY\_CorruptOrUnplayable**, **LIBMTP\_PROPERTY\_ProducerSerialNumber**, **LIBMTP\_PROPERTY\_RepresentativeSampleFormat**, **LIBMTP\_PROPERTY\_RepresentativeSampleSize**, **LIBMTP\_PROPERTY\_RepresentativeSampleHeight**, **LIBMTP\_PROPERTY\_RepresentativeSampleWidth**, **LIBMTP\_PROPERTY\_RepresentativeSampleDuration**, **LIBMTP\_PROPERTY\_RepresentativeSampleData**, **LIBMTP\_PROPERTY\_Width**, **LIBMTP\_PROPERTY\_Height**, **LIBMTP\_PROPERTY\_Duration**, **LIBMTP\_PROPERTY\_Rating**, **LIBMTP\_PROPERTY\_Track**, **LIBMTP\_PROPERTY\_Genre**, **LIBMTP\_PROPERTY\_Credits**, **LIBMTP\_PROPERTY\_Lyrics**, **LIBMTP\_PROPERTY\_SubscriptionContentID**, **LIBMTP\_PROPERTY\_ProducedBy**, **LIBMTP\_PROPERTY\_UseCount**, **LIBMTP\_PROPERTY\_SkipCount**, **LIBMTP\_PROPERTY\_LastAccessed**, **LIBMTP\_PROPERTY\_ParentalRating**, **LIBMTP\_PROPERTY\_MetaGenre**, **LIBMTP\_PROPERTY\_Composer**, **LIBMTP\_PROPERTY\_EffectiveRating**, **LIBMTP\_PROPERTY\_Subtitle**, **LIBMTP\_PROPERTY\_OriginalReleaseDate**, **LIBMTP\_PROPERTY\_AlbumName**, **LIBMTP\_PROPERTY\_AlbumArtist**, **LIBMTP\_PROPERTY\_Mood**, **LIBMTP\_PROPERTY\_DRMStatus**, **LIBMTP\_PROPERTY\_SubDescription**, **LIBMTP\_PROPERTY\_IsCropped**, **LIBMTP\_PROPERTY\_IsColorCorrected**, **LIBMTP\_PROPERTY\_ImageBitDepth**, **LIBMTP\_PROPERTY\_Fnumber**, **LIBMTP\_PROPERTY\_ExposureTime**, **LIBMTP\_PROPERTY\_ExposureIndex**, **LIBMTP\_PROPERTY\_DisplayName**, **LIBMTP\_PROPERTY\_BodyText**, **LIBMTP\_PROPERTY\_Subject**, **LIBMTP\_PROPERTY\_Priority**, **LIBMTP\_PROPERTY\_GivenName**, **LIBMTP\_PROPERTY\_MiddleNames**, **LIBMTP\_PROPERTY\_FamilyName**, **LIBMTP\_PROPERTY\_Prefix**, **LIBMTP\_PROPERTY\_Suffix**, **LIBMTP\_PROPERTY\_PhoneticGivenName**, **LIBMTP\_PROPERTY\_PhoneticFamilyName**, **LIBMTP\_PROPERTY\_EmailPrimary**, **LIBMTP\_PROPERTY\_EmailPersonal1**, **LIBMTP\_PROPERTY\_EmailPersonal2**, **LIBMTP\_PROPERTY\_EmailBusiness1**, **LIBMTP\_PROPERTY\_EmailBusiness2**, **LIBMTP\_PROPERTY\_EmailOthers**, **LIBMTP\_PROPERTY\_PhoneNumberPrimary**, **LIBMTP\_PROPERTY\_PhoneNumberPersonal**, **LIBMTP\_PROPERTY\_PhoneNumberPersonal2**, **LIBMTP\_PROPERTY\_PhoneNumberBusiness**, **LIBMTP\_PROPERTY\_PhoneNumberBusiness2**, **LIBMTP\_PROPERTY\_PhoneNumberMobile**, **LIBMTP\_PROPERTY\_PhoneNumberMobile2**, **LIBMTP\_PROPERTY\_FaxNumberPrimary**, **LIBMTP\_PROPERTY\_FaxNumberPersonal**, **LIBMTP\_PROPERTY\_FaxNumberBusiness**, **LIBMTP\_PROPERTY\_PagerNumber**, **LIBMTP\_PROPERTY\_PhoneNumberOthers**, **LIBMTP\_PROPERTY\_PrimaryWebAddress**, **LIBMTP\_PROPERTY\_PersonalWebAddress**, **LIBMTP\_PROPERTY\_BusinessWebAddress**, **LIBMTP\_PROPERTY\_InstantMessengerAddress**, **LIBMTP\_PROPERTY\_InstantMessengerAddress2**, **LIBMTP\_PROPERTY\_InstantMessengerAddress3**, **LIBMTP\_PROPERTY\_PostalAddressPersonalFull**, **LIBMTP\_PROPERTY\_PostalAddressPersonalFullLine1**, **LIBMTP\_PROPERTY\_PostalAddressPersonalFullLine2**, **LIBMTP\_PROPERTY\_PostalAddressPersonalFullCity**, **LIBMTP\_PROPERTY\_PostalAddressPersonalFullRegion**, **LIBMTP\_PROPERTY\_PostalAddressPersonalFullPostalCode**, **LIBMTP\_PROPERTY\_PostalAddressPersonalFullCountry**, **LIBMTP\_PROPERTY\_PostalAddressBusinessFull**, **LIBMTP\_PROPERTY\_PostalAddressBusinessLine1**, **LIBMTP\_PROPERTY\_PostalAddressBusinessLine2**, **LIBMTP\_PROPERTY\_PostalAddressBusinessCity**, **LIBMTP\_PROPERTY\_PostalAddressBusinessRegion**, **LIBMTP\_PROPERTY\_PostalAddressBusinessPostalCode**, **LIBMTP\_PROPERTY\_PostalAddressBusinessCountry**, **LIBMTP\_PROPERTY\_PostalAddressOtherFull**, **LIBMTP\_PROPERTY\_PostalAddressOtherLine1**, **LIBMTP\_PROPERTY\_PostalAddressOtherLine2**, **LIBMTP\_PROPERTY\_PostalAddressOtherCity**, **LIBMTP\_PROPERTY\_PostalAddressOtherRegion**, **LIBMTP\_PROPERTY\_PostalAddressOtherPostalCode**, **LIBMTP\_PROPERTY\_PostalAddressOtherCountry**, **LIBMTP\_PROPERTY\_OrganizationName**, **LIBMTP\_PROPERTY\_PhoneticOrganizationName**, **LIBMTP\_PROPERTY\_Role**, **LIBMTP\_PROPERTY\_Birthdate**, **LIBMTP\_PROPERTY\_MessageTo**, **LIBMTP\_PROPERTY\_MessageCC**, **LIBMTP\_PROPERTY\_MessageBCC**, **LIBMTP\_PROPERTY\_MessageRead**, **LIBMTP\_PROPERTY\_MessageReceivedTime**, **LIBMTP\_PROPERTY\_MessageSender**, **LIBMTP\_PROPERTY\_ActivityBeginTime**, **LIBMTP\_PROPERTY\_ActivityEndTime**, **LIBMTP\_PROPERTY\_ActivityLocation**, **LIBMTP\_PROPERTY\_ActivityRequiredAttendees**, **LIBMTP\_PROPERTY\_ActivityOptionalAttendees**, **LIBMTP\_PROPERTY\_ActivityResources**, **LIBMTP\_PROPERTY\_ActivityAccepted**, **LIBMTP\_PROPERTY\_Owner**, **LIBMTP\_PROPERTY\_Editor**, **LIBMTP\_PROPERTY\_Webmaster**, **LIBMTP\_PROPERTY\_URLSource**, **LIBMTP\_PROPERTY\_URLDestination**, **LIBMTP\_PROPERTY\_TimeBookmark**, **LIBMTP\_PROPERTY\_ObjectBookmark**, **LIBMTP\_PROPERTY\_ByteBookmark**, **LIBMTP\_PROPERTY\_LastBuildDate**, **LIBMTP\_PROPERTY\_TimetoLive**, **LIBMTP\_PROPERTY\_MediaGUID**, **LIBMTP\_PROPERTY\_TotalBitRate**, **LIBMTP\_PROPERTY\_BitRateType**, **LIBMTP\_PROPERTY\_SampleRate**, **LIBMTP\_PROPERTY\_NumberOfChannels**, **LIBMTP\_PROPERTY\_AudioBitDepth**, **LIBMTP\_PROPERTY\_ScanDepth**, **LIBMTP\_PROPERTY\_AudioWAVECodec**, **LIBMTP\_PROPERTY\_AudioBitRate**, **LIBMTP\_PROPERTY\_VideoFourCCCodec**, **LIBMTP\_PROPERTY\_VideoBitRate**, **LIBMTP\_PROPERTY\_FramesPerThousandSeconds**, **LIBMTP\_PROPERTY\_KeyFrameDistance**, **LIBMTP\_PROPERTY\_BufferSize**, **LIBMTP\_PROPERTY\_EncodingQuality**, **LIBMTP\_PROPERTY\_EncodingProfile**, **LIBMTP\_PROPERTY\_BuyFlag**, **LIBMTP\_PROPERTY\_UNKNOWN** }\
 enum **LIBMTP\_datatype\_t** { **LIBMTP\_DATATYPE\_INT8**, **LIBMTP\_DATATYPE\_UINT8**, **LIBMTP\_DATATYPE\_INT16**, **LIBMTP\_DATATYPE\_UINT16**, **LIBMTP\_DATATYPE\_INT32**, **LIBMTP\_DATATYPE\_UINT32**, **LIBMTP\_DATATYPE\_INT64**, **LIBMTP\_DATATYPE\_UINT64** }\
 enum **LIBMTP\_devicecap\_t** { **LIBMTP\_DEVICECAP\_GetPartialObject**, **LIBMTP\_DEVICECAP\_SendPartialObject**, **LIBMTP\_DEVICECAP\_EditObjects**, **LIBMTP\_DEVICECAP\_MoveObject**, **LIBMTP\_DEVICECAP\_CopyObject** }\
 enum **LIBMTP\_error\_number\_t** { **LIBMTP\_ERROR\_NONE**, **LIBMTP\_ERROR\_GENERAL**, **LIBMTP\_ERROR\_PTP\_LAYER**, **LIBMTP\_ERROR\_USB\_LAYER**, **LIBMTP\_ERROR\_MEMORY\_ALLOCATION**, **LIBMTP\_ERROR\_NO\_DEVICE\_ATTACHED**, **LIBMTP\_ERROR\_STORAGE\_FULL**, **LIBMTP\_ERROR\_CONNECTING**, **LIBMTP\_ERROR\_CANCELLED** }\
 enum **LIBMTP\_event\_enum** { **LIBMTP\_EVENT\_NONE**, **LIBMTP\_EVENT\_STORE\_ADDED**, **LIBMTP\_EVENT\_STORE\_REMOVED**, **LIBMTP\_EVENT\_OBJECT\_ADDED**, **LIBMTP\_EVENT\_OBJECT\_REMOVED**, **LIBMTP\_EVENT\_DEVICE\_PROPERTY\_CHANGED** }\

### Functions

void **LIBMTP\_Set\_Debug** (int)\
 void **LIBMTP\_Init** (void)\
 int **LIBMTP\_Get\_Supported\_Devices\_List** (**LIBMTP\_device\_entry\_t** \*\*const, int \*const)\
 **LIBMTP\_error\_number\_t** **LIBMTP\_Detect\_Raw\_Devices** (**LIBMTP\_raw\_device\_t** \*\*, int \*)\
 int **LIBMTP\_Check\_Specific\_Device** (int busno, int devno)\
 **LIBMTP\_mtpdevice\_t** \* **LIBMTP\_Open\_Raw\_Device** (**LIBMTP\_raw\_device\_t** \*)\
 **LIBMTP\_mtpdevice\_t** \* **LIBMTP\_Open\_Raw\_Device\_Uncached** (**LIBMTP\_raw\_device\_t** \*)\
 **LIBMTP\_mtpdevice\_t** \* **LIBMTP\_Get\_Device** (int)\
 **LIBMTP\_mtpdevice\_t** \* **LIBMTP\_Get\_First\_Device** (void)\
 **LIBMTP\_mtpdevice\_t** \* **LIBMTP\_Get\_Device\_By\_SerialNumber** (char \*)\
 **LIBMTP\_mtpdevice\_t** \* **LIBMTP\_Get\_Device\_By\_ID** (char \*)\
 **LIBMTP\_error\_number\_t** **LIBMTP\_Get\_Connected\_Devices** (**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** (**LIBMTP\_mtpdevice\_t** \*)\
 void **LIBMTP\_Dump\_Device\_Info** (**LIBMTP\_mtpdevice\_t** \*)\
 int **LIBMTP\_Reset\_Device** (**LIBMTP\_mtpdevice\_t** \*)\
 char \* **LIBMTP\_Get\_Manufacturername** (**LIBMTP\_mtpdevice\_t** \*)\
 char \* **LIBMTP\_Get\_Modelname** (**LIBMTP\_mtpdevice\_t** \*)\
 char \* **LIBMTP\_Get\_Serialnumber** (**LIBMTP\_mtpdevice\_t** \*)\
 char \* **LIBMTP\_Get\_Deviceversion** (**LIBMTP\_mtpdevice\_t** \*)\
 char \* **LIBMTP\_Get\_Friendlyname** (**LIBMTP\_mtpdevice\_t** \*)\
 int **LIBMTP\_Set\_Friendlyname** (**LIBMTP\_mtpdevice\_t** \*, char const \*const)\
 char \* **LIBMTP\_Get\_Syncpartner** (**LIBMTP\_mtpdevice\_t** \*)\
 int **LIBMTP\_Set\_Syncpartner** (**LIBMTP\_mtpdevice\_t** \*, char const \*const)\
 int **LIBMTP\_Get\_Batterylevel** (**LIBMTP\_mtpdevice\_t** \*, uint8\_t \*const, uint8\_t \*const)\
 int **LIBMTP\_Get\_Secure\_Time** (**LIBMTP\_mtpdevice\_t** \*, char \*\*const)\
 int **LIBMTP\_Get\_Device\_Certificate** (**LIBMTP\_mtpdevice\_t** \*, char \*\*const)\
 int **LIBMTP\_Get\_Supported\_Filetypes** (**LIBMTP\_mtpdevice\_t** \*, uint16\_t \*\*const, uint16\_t \*const)\
 int **LIBMTP\_Check\_Capability** (**LIBMTP\_mtpdevice\_t** \*, **LIBMTP\_devicecap\_t**)\
 **LIBMTP\_error\_t** \* **LIBMTP\_Get\_Errorstack** (**LIBMTP\_mtpdevice\_t** \*)\
 void **LIBMTP\_Clear\_Errorstack** (**LIBMTP\_mtpdevice\_t** \*)\
 void **LIBMTP\_Dump\_Errorstack** (**LIBMTP\_mtpdevice\_t** \*)\
 void **LIBMTP\_FreeMemory** (void \*)\
 int **LIBMTP\_Get\_Storage** (**LIBMTP\_mtpdevice\_t** \*, int const)\
 int **LIBMTP\_Format\_Storage** (**LIBMTP\_mtpdevice\_t** \*, **LIBMTP\_devicestorage\_t** \*)\
 char \* **LIBMTP\_Get\_String\_From\_Object** (**LIBMTP\_mtpdevice\_t** \*, uint32\_t const, **LIBMTP\_property\_t** const)\
 uint64\_t **LIBMTP\_Get\_u64\_From\_Object** (**LIBMTP\_mtpdevice\_t** \*, uint32\_t const, **LIBMTP\_property\_t** const, uint64\_t const)\
 uint32\_t **LIBMTP\_Get\_u32\_From\_Object** (**LIBMTP\_mtpdevice\_t** \*, uint32\_t const, **LIBMTP\_property\_t** const, uint32\_t const)\
 uint16\_t **LIBMTP\_Get\_u16\_From\_Object** (**LIBMTP\_mtpdevice\_t** \*, uint32\_t const, **LIBMTP\_property\_t** const, uint16\_t const)\
 uint8\_t **LIBMTP\_Get\_u8\_From\_Object** (**LIBMTP\_mtpdevice\_t** \*, uint32\_t const, **LIBMTP\_property\_t** const, uint8\_t const)\
 int **LIBMTP\_Set\_Object\_String** (**LIBMTP\_mtpdevice\_t** \*, uint32\_t const, **LIBMTP\_property\_t** const, char const \*const)\
 int **LIBMTP\_Set\_Object\_u32** (**LIBMTP\_mtpdevice\_t** \*, uint32\_t const, **LIBMTP\_property\_t** const, uint32\_t const)\
 int **LIBMTP\_Set\_Object\_u16** (**LIBMTP\_mtpdevice\_t** \*, uint32\_t const, **LIBMTP\_property\_t** const, uint16\_t const)\
 int **LIBMTP\_Set\_Object\_u8** (**LIBMTP\_mtpdevice\_t** \*, uint32\_t const, **LIBMTP\_property\_t** const, uint8\_t const)\
 char const \* **LIBMTP\_Get\_Property\_Description** (**LIBMTP\_property\_t** inproperty)\
 int **LIBMTP\_Is\_Property\_Supported** (**LIBMTP\_mtpdevice\_t** \*, **LIBMTP\_property\_t** const, **LIBMTP\_filetype\_t** const)\
 int **LIBMTP\_Get\_Allowed\_Property\_Values** (**LIBMTP\_mtpdevice\_t** \*, **LIBMTP\_property\_t** const, **LIBMTP\_filetype\_t** const, **LIBMTP\_allowed\_values\_t** \*)\
 void **LIBMTP\_destroy\_allowed\_values\_t** (**LIBMTP\_allowed\_values\_t** \*)\
 **LIBMTP\_file\_t** \* **LIBMTP\_new\_file\_t** (void)\
 void **LIBMTP\_destroy\_file\_t** (**LIBMTP\_file\_t** \*)\
 char const \* **LIBMTP\_Get\_Filetype\_Description** (**LIBMTP\_filetype\_t**)\
 **LIBMTP\_file\_t** \* **LIBMTP\_Get\_Filelisting** (**LIBMTP\_mtpdevice\_t** \*)\
 **LIBMTP\_file\_t** \* **LIBMTP\_Get\_Filelisting\_With\_Callback** (**LIBMTP\_mtpdevice\_t** \*, **LIBMTP\_progressfunc\_t** const, void const \*const)\
 **LIBMTP\_file\_t** \* **LIBMTP\_Get\_Files\_And\_Folders** (**LIBMTP\_mtpdevice\_t** \*, uint32\_t const, uint32\_t const)\
 int **LIBMTP\_Get\_Children** (**LIBMTP\_mtpdevice\_t** \*, uint32\_t const, uint32\_t const, uint32\_t \*\*)\
 **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 \*const, **LIBMTP\_progressfunc\_t** const, void const \*const)\
 int **LIBMTP\_Get\_File\_To\_File\_Descriptor** (**LIBMTP\_mtpdevice\_t** \*, uint32\_t const, int const, **LIBMTP\_progressfunc\_t** const, void const \*const)\
 int **LIBMTP\_Get\_File\_To\_Handler** (**LIBMTP\_mtpdevice\_t** \*, uint32\_t const, **MTPDataPutFunc**, void \*, **LIBMTP\_progressfunc\_t** const, void const \*const)\
 int **LIBMTP\_Send\_File\_From\_File** (**LIBMTP\_mtpdevice\_t** \*, char const \*const, **LIBMTP\_file\_t** \*const, **LIBMTP\_progressfunc\_t** const, void const \*const)\
 int **LIBMTP\_Send\_File\_From\_File\_Descriptor** (**LIBMTP\_mtpdevice\_t** \*, int const, **LIBMTP\_file\_t** \*const, **LIBMTP\_progressfunc\_t** const, void const \*const)\
 int **LIBMTP\_Send\_File\_From\_Handler** (**LIBMTP\_mtpdevice\_t** \*, **MTPDataGetFunc**, void \*, **LIBMTP\_file\_t** \*const, **LIBMTP\_progressfunc\_t** const, void const \*const)\
 int **LIBMTP\_Set\_File\_Name** (**LIBMTP\_mtpdevice\_t** \*, **LIBMTP\_file\_t** \*, const char \*)\
 **LIBMTP\_filesampledata\_t** \* **LIBMTP\_new\_filesampledata\_t** (void)\
 void **LIBMTP\_destroy\_filesampledata\_t** (**LIBMTP\_filesampledata\_t** \*)\
 int **LIBMTP\_Get\_Representative\_Sample\_Format** (**LIBMTP\_mtpdevice\_t** \*, **LIBMTP\_filetype\_t** const, **LIBMTP\_filesampledata\_t** \*\*)\
 int **LIBMTP\_Send\_Representative\_Sample** (**LIBMTP\_mtpdevice\_t** \*, uint32\_t const, **LIBMTP\_filesampledata\_t** \*)\
 int **LIBMTP\_Get\_Representative\_Sample** (**LIBMTP\_mtpdevice\_t** \*, uint32\_t const, **LIBMTP\_filesampledata\_t** \*)\
 int **LIBMTP\_Get\_Thumbnail** (**LIBMTP\_mtpdevice\_t** \*, uint32\_t const, unsigned char \*\*data, unsigned int \*size)\
 **LIBMTP\_track\_t** \* **LIBMTP\_new\_track\_t** (void)\
 void **LIBMTP\_destroy\_track\_t** (**LIBMTP\_track\_t** \*)\
 **LIBMTP\_track\_t** \* **LIBMTP\_Get\_Tracklisting** (**LIBMTP\_mtpdevice\_t** \*)\
 **LIBMTP\_track\_t** \* **LIBMTP\_Get\_Tracklisting\_With\_Callback** (**LIBMTP\_mtpdevice\_t** \*, **LIBMTP\_progressfunc\_t** const, void const \*const)\
 **LIBMTP\_track\_t** \* **LIBMTP\_Get\_Tracklisting\_With\_Callback\_For\_Storage** (**LIBMTP\_mtpdevice\_t** \*, uint32\_t const, **LIBMTP\_progressfunc\_t** const, void const \*const)\
 **LIBMTP\_track\_t** \* **LIBMTP\_Get\_Trackmetadata** (**LIBMTP\_mtpdevice\_t** \*, uint32\_t const)\
 int **LIBMTP\_Get\_Track\_To\_File** (**LIBMTP\_mtpdevice\_t** \*, uint32\_t, char const \*const, **LIBMTP\_progressfunc\_t** const, void const \*const)\
 int **LIBMTP\_Get\_Track\_To\_File\_Descriptor** (**LIBMTP\_mtpdevice\_t** \*, uint32\_t const, int const, **LIBMTP\_progressfunc\_t** const, void const \*const)\
 int **LIBMTP\_Get\_Track\_To\_Handler** (**LIBMTP\_mtpdevice\_t** \*, uint32\_t const, **MTPDataPutFunc**, void \*, **LIBMTP\_progressfunc\_t** const, void const \*const)\
 int **LIBMTP\_Send\_Track\_From\_File** (**LIBMTP\_mtpdevice\_t** \*, char const \*const, **LIBMTP\_track\_t** \*const, **LIBMTP\_progressfunc\_t** const, void const \*const)\
 int **LIBMTP\_Send\_Track\_From\_File\_Descriptor** (**LIBMTP\_mtpdevice\_t** \*, int const, **LIBMTP\_track\_t** \*const, **LIBMTP\_progressfunc\_t** const, void const \*const)\
 int **LIBMTP\_Send\_Track\_From\_Handler** (**LIBMTP\_mtpdevice\_t** \*, **MTPDataGetFunc**, void \*, **LIBMTP\_track\_t** \*const, **LIBMTP\_progressfunc\_t** const, void const \*const)\
 int **LIBMTP\_Update\_Track\_Metadata** (**LIBMTP\_mtpdevice\_t** \*, **LIBMTP\_track\_t** const \*const)\
 int **LIBMTP\_Track\_Exists** (**LIBMTP\_mtpdevice\_t** \*, uint32\_t const)\
 int **LIBMTP\_Set\_Track\_Name** (**LIBMTP\_mtpdevice\_t** \*, **LIBMTP\_track\_t** \*, const char \*)\
 **LIBMTP\_folder\_t** \* **LIBMTP\_new\_folder\_t** (void)\
 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\_For\_Storage** (**LIBMTP\_mtpdevice\_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)\
 int **LIBMTP\_Set\_Folder\_Name** (**LIBMTP\_mtpdevice\_t** \*, **LIBMTP\_folder\_t** \*, const char \*)\
 **LIBMTP\_playlist\_t** \* **LIBMTP\_new\_playlist\_t** (void)\
 void **LIBMTP\_destroy\_playlist\_t** (**LIBMTP\_playlist\_t** \*)\
 **LIBMTP\_playlist\_t** \* **LIBMTP\_Get\_Playlist\_List** (**LIBMTP\_mtpdevice\_t** \*)\
 **LIBMTP\_playlist\_t** \* **LIBMTP\_Get\_Playlist** (**LIBMTP\_mtpdevice\_t** \*, uint32\_t const)\
 int **LIBMTP\_Create\_New\_Playlist** (**LIBMTP\_mtpdevice\_t** \*, **LIBMTP\_playlist\_t** \*const)\
 int **LIBMTP\_Update\_Playlist** (**LIBMTP\_mtpdevice\_t** \*, **LIBMTP\_playlist\_t** \*const)\
 int **LIBMTP\_Set\_Playlist\_Name** (**LIBMTP\_mtpdevice\_t** \*, **LIBMTP\_playlist\_t** \*, const char \*)\
 **LIBMTP\_album\_t** \* **LIBMTP\_new\_album\_t** (void)\
 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\_For\_Storage** (**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)\
 int **LIBMTP\_Update\_Album** (**LIBMTP\_mtpdevice\_t** \*, **LIBMTP\_album\_t** const \*const)\
 int **LIBMTP\_Set\_Album\_Name** (**LIBMTP\_mtpdevice\_t** \*, **LIBMTP\_album\_t** \*, const char \*)\
 int **LIBMTP\_Delete\_Object** (**LIBMTP\_mtpdevice\_t** \*, uint32\_t)\
 int **LIBMTP\_Move\_Object** (**LIBMTP\_mtpdevice\_t** \*, uint32\_t, uint32\_t, uint32\_t)\
 int **LIBMTP\_Copy\_Object** (**LIBMTP\_mtpdevice\_t** \*, uint32\_t, uint32\_t, uint32\_t)\
 int **LIBMTP\_Set\_Object\_Filename** (**LIBMTP\_mtpdevice\_t** \*, uint32\_t, char \*)\
 int **LIBMTP\_GetPartialObject** (**LIBMTP\_mtpdevice\_t** \*, uint32\_t const, uint64\_t, uint32\_t, unsigned char \*\*, unsigned int \*)\
 int **LIBMTP\_SendPartialObject** (**LIBMTP\_mtpdevice\_t** \*, uint32\_t const, uint64\_t, unsigned char \*, unsigned int)\
 int **LIBMTP\_BeginEditObject** (**LIBMTP\_mtpdevice\_t** \*, uint32\_t const)\
 int **LIBMTP\_EndEditObject** (**LIBMTP\_mtpdevice\_t** \*, uint32\_t const)\
 int **LIBMTP\_TruncateObject** (**LIBMTP\_mtpdevice\_t** \*, uint32\_t const, uint64\_t)\
 int **LIBMTP\_Read\_Event** (**LIBMTP\_mtpdevice\_t** \*, LIBMTP\_event\_t \*, uint32\_t \*)\
 int **LIBMTP\_Read\_Event\_Async** (**LIBMTP\_mtpdevice\_t** \*, LIBMTP\_event\_cb\_fn, void \*)\
 int **LIBMTP\_Handle\_Events\_Timeout\_Completed** (struct timeval \*, int \*)\
 int **LIBMTP\_Custom\_Operation** (**LIBMTP\_mtpdevice\_t** \*, uint16\_t, int,...)\

### Variables

int **LIBMTP\_debug**\

## Detailed Description

Interface to the Media Transfer Protocol library.

Copyright (C) 2005-2013 Linus Walleij triad@df.lth.se Copyright (C) 2005-2008 Richard A. Low richard@wentnet.com Copyright (C) 2007 Ted Bullock tbullock@canada.com Copyright (C) 2008 Florent Mertens flomertens@gmail.com

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.

` #include <`**libmtp.h**`> `

## Variable Documentation

### int LIBMTP\_debug` [extern]`

**Global debug level We use a flag system to enable a part of logs.**

**The LIBMTP\_DEBUG environment variable sets the debug flags for any binary that uses libmtp and calls LIBMTP\_Init. The value can be given in decimal (must not start with '0' or it will be interpreted in octal), or in hexadecimal (must start with '0x').**

**The value '-1' enables all debug flags.**

**Some of the utilities in examples/ also take a command-line flag '-d' that enables LIBMTP\_DEBUG\_PTP and LIBMTP\_DEBUG\_DATA (same as setting LIBMTP\_DEBUG=9).**

**Flags (combine by adding the hex values): 0x00 \[0000 0000\] : LIBMTP\_DEBUG\_NONE : no debug (default) 0x01 \[0000 0001\] : LIBMTP\_DEBUG\_PTP : PTP debug 0x02 \[0000 0010\] : LIBMTP\_DEBUG\_PLST : Playlist debug 0x04 \[0000 0100\] : LIBMTP\_DEBUG\_USB : USB debug 0x08 \[0000 1000\] : LIBMTP\_DEBUG\_DATA : USB data debug**

**(Please keep this list in sync with libmtp.h.)**

**Referenced by LIBMTP\_Set\_Debug().**

## Author

**Generated automatically by Doxygen for libmtp from the source code.**
