@ -34,7 +34,6 @@
# include "libavformat/version.h"
# define AVIO_SEEKABLE_NORMAL 0x0001 /**< Seeking works like for a local file */
/**
@ -53,6 +52,47 @@ typedef struct AVIOInterruptCB {
void * opaque ;
} AVIOInterruptCB ;
/**
* Directory entry types .
*/
enum AVIODirEntryType {
AVIO_ENTRY_UNKNOWN ,
AVIO_ENTRY_BLOCK_DEVICE ,
AVIO_ENTRY_CHARACTER_DEVICE ,
AVIO_ENTRY_DIRECTORY ,
AVIO_ENTRY_NAMED_PIPE ,
AVIO_ENTRY_SYMBOLIC_LINK ,
AVIO_ENTRY_SOCKET ,
AVIO_ENTRY_FILE
} ;
/**
* Describes single entry of the directory .
*
* Only name and type fields are guaranteed be set .
* Rest of fields are protocol or / and platform dependent and might be unknown .
*/
typedef struct AVIODirEntry {
char * name ; /**< Filename */
int type ; /**< Type of the entry */
int utf8 ; /**< Set to 1 when name is encoded with UTF-8, 0 otherwise.
Name can be encoded with UTF - 8 eventhough 0 is set . */
int64_t size ; /**< File size in bytes, -1 if unknown. */
int64_t modification_timestamp ; /**< Time of last modification in microseconds since unix
epoch , - 1 if unknown . */
int64_t access_timestamp ; /**< Time of last access in microseconds since unix epoch,
- 1 if unknown . */
int64_t status_change_timestamp ; /**< Time of last status change in microseconds since unix
epoch , - 1 if unknown . */
int64_t user_id ; /**< User ID of owner, -1 if unknown. */
int64_t group_id ; /**< Group ID of owner, -1 if unknown. */
int64_t filemode ; /**< Unix file mode, -1 if unknown. */
} AVIODirEntry ;
typedef struct AVIODirContext {
struct URLContext * url_context ;
} AVIODirContext ;
/**
* Bytestream IO Context .
* New fields can be added to the end with minor version bumps .
@ -180,6 +220,48 @@ const char *avio_find_protocol_name(const char *url);
*/
int avio_check ( const char * url , int flags ) ;
/**
* Open directory for reading .
*
* @ param s directory read context . Pointer to a NULL pointer must be passed .
* @ param url directory to be listed .
* @ param options A dictionary filled with protocol - private options . On return
* this parameter will be destroyed and replaced with a dictionary
* containing options that were not found . May be NULL .
* @ return > = 0 on success or negative on error .
*/
int avio_open_dir ( AVIODirContext * * s , const char * url , AVDictionary * * options ) ;
/**
* Get next directory entry .
*
* Returned entry must be freed with avio_free_directory_entry ( ) . In particular
* it may outlive AVIODirContext .
*
* @ param s directory read context .
* @ param [ out ] next next entry or NULL when no more entries .
* @ return > = 0 on success or negative on error .
*/
int avio_read_dir ( AVIODirContext * s , AVIODirEntry * * next ) ;
/**
* Close directory .
*
* @ note Entries created using avio_read_dir ( ) are not deleted and must be
* freeded with avio_free_directory_entry ( ) .
*
* @ param s directory read context .
* @ return > = 0 on success or negative on error .
*/
int avio_close_dir ( AVIODirContext * * s ) ;
/**
* Free entry allocated by avio_read_dir ( ) .
*
* @ param entry entry to be freed .
*/
void avio_free_directory_entry ( AVIODirEntry * * entry ) ;
/**
* Allocate and initialize an AVIOContext for buffered I / O . It must be later
* freed with av_free ( ) .