mirror of
https://github.com/cookiengineer/audacity
synced 2025-10-18 16:41:14 +02:00
Bug #176 - Support newer versions of FFmpeg.
Also includes Benjamin's ffmpeg-configure-v2.patch.
This commit is contained in:
@@ -21,7 +21,7 @@
|
||||
#define AVFORMAT_AVIO_H
|
||||
|
||||
/**
|
||||
* @file libavformat/avio.h
|
||||
* @file
|
||||
* unbuffered I/O operations
|
||||
*
|
||||
* @warning This file has to be considered an internal but installed
|
||||
@@ -50,7 +50,7 @@ typedef struct URLContext {
|
||||
int is_streamed; /**< true if streamed (no seek possible), default = false */
|
||||
int max_packet_size; /**< if non zero, the stream is packetized with this max packet size */
|
||||
void *priv_data;
|
||||
char *filename; /**< specified filename */
|
||||
char *filename; /**< specified URL */
|
||||
} URLContext;
|
||||
|
||||
typedef struct URLPollEntry {
|
||||
@@ -65,15 +65,86 @@ typedef struct URLPollEntry {
|
||||
|
||||
typedef int URLInterruptCB(void);
|
||||
|
||||
/**
|
||||
* Creates an URLContext for accessing to the resource indicated by
|
||||
* url, and opens it using the URLProtocol up.
|
||||
*
|
||||
* @param puc pointer to the location where, in case of success, the
|
||||
* function puts the pointer to the created URLContext
|
||||
* @param flags flags which control how the resource indicated by url
|
||||
* is to be opened
|
||||
* @return 0 in case of success, a negative value corresponding to an
|
||||
* AVERROR code in case of failure
|
||||
*/
|
||||
int url_open_protocol (URLContext **puc, struct URLProtocol *up,
|
||||
const char *filename, int flags);
|
||||
int url_open(URLContext **h, const char *filename, int flags);
|
||||
const char *url, int flags);
|
||||
|
||||
/**
|
||||
* Creates an URLContext for accessing to the resource indicated by
|
||||
* url, and opens it.
|
||||
*
|
||||
* @param puc pointer to the location where, in case of success, the
|
||||
* function puts the pointer to the created URLContext
|
||||
* @param flags flags which control how the resource indicated by url
|
||||
* is to be opened
|
||||
* @return 0 in case of success, a negative value corresponding to an
|
||||
* AVERROR code in case of failure
|
||||
*/
|
||||
int url_open(URLContext **h, const char *url, int flags);
|
||||
|
||||
/**
|
||||
* Reads up to size bytes from the resource accessed by h, and stores
|
||||
* the read bytes in buf.
|
||||
*
|
||||
* @return The number of bytes actually read, or a negative value
|
||||
* corresponding to an AVERROR code in case of error. A value of zero
|
||||
* indicates that it is not possible to read more from the accessed
|
||||
* resource (except if the value of the size argument is also zero).
|
||||
*/
|
||||
int url_read(URLContext *h, unsigned char *buf, int size);
|
||||
|
||||
/**
|
||||
* Read as many bytes as possible (up to size), calling the
|
||||
* read function multiple times if necessary.
|
||||
* Will also retry if the read function returns AVERROR(EAGAIN).
|
||||
* This makes special short-read handling in applications
|
||||
* unnecessary, if the return value is < size then it is
|
||||
* certain there was either an error or the end of file was reached.
|
||||
*/
|
||||
int url_read_complete(URLContext *h, unsigned char *buf, int size);
|
||||
int url_write(URLContext *h, unsigned char *buf, int size);
|
||||
|
||||
/**
|
||||
* Changes the position that will be used by the next read/write
|
||||
* operation on the resource accessed by h.
|
||||
*
|
||||
* @param pos specifies the new position to set
|
||||
* @param whence specifies how pos should be interpreted, it must be
|
||||
* one of SEEK_SET (seek from the beginning), SEEK_CUR (seek from the
|
||||
* current position), SEEK_END (seek from the end), or AVSEEK_SIZE
|
||||
* (return the filesize of the requested resource, pos is ignored).
|
||||
* @return a negative value corresponding to an AVERROR code in case
|
||||
* of failure, or the resulting file position, measured in bytes from
|
||||
* the beginning of the file. You can use this feature together with
|
||||
* SEEK_CUR to read the current file position.
|
||||
*/
|
||||
int64_t url_seek(URLContext *h, int64_t pos, int whence);
|
||||
|
||||
/**
|
||||
* Closes the resource accessed by the URLContext h, and frees the
|
||||
* memory used by it.
|
||||
*
|
||||
* @return a negative value if an error condition occurred, 0
|
||||
* otherwise
|
||||
*/
|
||||
int url_close(URLContext *h);
|
||||
int url_exist(const char *filename);
|
||||
|
||||
/**
|
||||
* Returns a non-zero value if the resource indicated by url
|
||||
* exists, 0 otherwise.
|
||||
*/
|
||||
int url_exist(const char *url);
|
||||
|
||||
int64_t url_filesize(URLContext *h);
|
||||
|
||||
/**
|
||||
@@ -141,9 +212,17 @@ int64_t av_url_read_seek(URLContext *h, int stream_index,
|
||||
*/
|
||||
#define AVSEEK_SIZE 0x10000
|
||||
|
||||
/**
|
||||
* Oring this flag as into the "whence" parameter to a seek function causes it to
|
||||
* seek by any means (like reopening and linear reading) or other normally unreasonble
|
||||
* means that can be extreemly slow.
|
||||
* This may be ignored by the seek code.
|
||||
*/
|
||||
#define AVSEEK_FORCE 0x20000
|
||||
|
||||
typedef struct URLProtocol {
|
||||
const char *name;
|
||||
int (*url_open)(URLContext *h, const char *filename, int flags);
|
||||
int (*url_open)(URLContext *h, const char *url, int flags);
|
||||
int (*url_read)(URLContext *h, unsigned char *buf, int size);
|
||||
int (*url_write)(URLContext *h, unsigned char *buf, int size);
|
||||
int64_t (*url_seek)(URLContext *h, int64_t pos, int whence);
|
||||
@@ -175,6 +254,9 @@ URLProtocol *av_protocol_next(URLProtocol *p);
|
||||
attribute_deprecated int register_protocol(URLProtocol *protocol);
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Registers the URLProtocol protocol.
|
||||
*/
|
||||
int av_register_protocol(URLProtocol *protocol);
|
||||
|
||||
/**
|
||||
@@ -294,7 +376,7 @@ void put_flush_packet(ByteIOContext *s);
|
||||
|
||||
/**
|
||||
* Reads size bytes from ByteIOContext into buf.
|
||||
* @returns number of bytes read or AVERROR
|
||||
* @return number of bytes read or AVERROR
|
||||
*/
|
||||
int get_buffer(ByteIOContext *s, unsigned char *buf, int size);
|
||||
|
||||
@@ -302,7 +384,7 @@ int get_buffer(ByteIOContext *s, unsigned char *buf, int size);
|
||||
* Reads size bytes from ByteIOContext into buf.
|
||||
* This reads at most 1 packet. If that is not enough fewer bytes will be
|
||||
* returned.
|
||||
* @returns number of bytes read or AVERROR
|
||||
* @return number of bytes read or AVERROR
|
||||
*/
|
||||
int get_partial_buffer(ByteIOContext *s, unsigned char *buf, int size);
|
||||
|
||||
@@ -327,21 +409,59 @@ static inline int url_is_streamed(ByteIOContext *s)
|
||||
return s->is_streamed;
|
||||
}
|
||||
|
||||
/** @note when opened as read/write, the buffers are only used for
|
||||
writing */
|
||||
/**
|
||||
* Creates and initializes a ByteIOContext for accessing the
|
||||
* resource referenced by the URLContext h.
|
||||
* @note When the URLContext h has been opened in read+write mode, the
|
||||
* ByteIOContext can be used only for writing.
|
||||
*
|
||||
* @param s Used to return the pointer to the created ByteIOContext.
|
||||
* In case of failure the pointed to value is set to NULL.
|
||||
* @return 0 in case of success, a negative value corresponding to an
|
||||
* AVERROR code in case of failure
|
||||
*/
|
||||
int url_fdopen(ByteIOContext **s, URLContext *h);
|
||||
|
||||
/** @warning must be called before any I/O */
|
||||
int url_setbufsize(ByteIOContext *s, int buf_size);
|
||||
#if LIBAVFORMAT_VERSION_MAJOR < 53
|
||||
/** Reset the buffer for reading or writing.
|
||||
* @note Will drop any data currently in the buffer without transmitting it.
|
||||
* @param flags URL_RDONLY to set up the buffer for reading, or URL_WRONLY
|
||||
* to set up the buffer for writing. */
|
||||
int url_resetbuf(ByteIOContext *s, int flags);
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Rewinds the ByteIOContext using the specified buffer containing the first buf_size bytes of the file.
|
||||
* Used after probing to avoid seeking.
|
||||
* Joins buf and s->buffer, taking any overlap into consideration.
|
||||
* @note s->buffer must overlap with buf or they can't be joined and the function fails
|
||||
* @note This function is NOT part of the public API
|
||||
*
|
||||
* @param s The read-only ByteIOContext to rewind
|
||||
* @param buf The probe buffer containing the first buf_size bytes of the file
|
||||
* @param buf_size The size of buf
|
||||
* @return 0 in case of success, a negative value corresponding to an
|
||||
* AVERROR code in case of failure
|
||||
*/
|
||||
int ff_rewind_with_probe_data(ByteIOContext *s, unsigned char *buf, int buf_size);
|
||||
|
||||
/**
|
||||
* Creates and initializes a ByteIOContext for accessing the
|
||||
* resource indicated by url.
|
||||
* @note When the resource indicated by url has been opened in
|
||||
* read+write mode, the ByteIOContext can be used only for writing.
|
||||
*
|
||||
* @param s Used to return the pointer to the created ByteIOContext.
|
||||
* In case of failure the pointed to value is set to NULL.
|
||||
* @param flags flags which control how the resource indicated by url
|
||||
* is to be opened
|
||||
* @return 0 in case of success, a negative value corresponding to an
|
||||
* AVERROR code in case of failure
|
||||
*/
|
||||
int url_fopen(ByteIOContext **s, const char *url, int flags);
|
||||
|
||||
/** @note when opened as read/write, the buffers are only used for
|
||||
writing */
|
||||
int url_fopen(ByteIOContext **s, const char *filename, int flags);
|
||||
int url_fclose(ByteIOContext *s);
|
||||
URLContext *url_fileno(ByteIOContext *s);
|
||||
|
||||
|
Reference in New Issue
Block a user