Signed-off-by: Lukasz Marek <lukasz.m.luki@gmail.com>tags/n2.2-rc1
@@ -15,6 +15,9 @@ libavutil: 2012-10-22 | |||||
API changes, most recent first: | API changes, most recent first: | ||||
2014-02-xx - xxxxxxx - lavd 55.10.100 - avdevice.h | |||||
Add avdevice_list_devices() and avdevice_free_list_devices() | |||||
2014-02-xx - xxxxxxx - lavu 53.3.0 - frame.h | 2014-02-xx - xxxxxxx - lavu 53.3.0 - frame.h | ||||
Add AV_FRAME_DATA_DOWNMIX_INFO value to the AVFrameSideDataType enum and | Add AV_FRAME_DATA_DOWNMIX_INFO value to the AVFrameSideDataType enum and | ||||
downmix_info.h API, which identify downmix-related metadata. | downmix_info.h API, which identify downmix-related metadata. | ||||
@@ -52,3 +52,44 @@ int avdevice_dev_to_app_control_message(struct AVFormatContext *s, enum AVDevToA | |||||
return AVERROR(ENOSYS); | return AVERROR(ENOSYS); | ||||
return s->control_message_cb(s, type, data, data_size); | return s->control_message_cb(s, type, data, data_size); | ||||
} | } | ||||
int avdevice_list_devices(AVFormatContext *s, AVDeviceInfoList **device_list) | |||||
{ | |||||
av_assert0(s); | |||||
av_assert0(device_list); | |||||
av_assert0(s->oformat || s->iformat); | |||||
if ((s->oformat && !s->oformat->get_device_list) || | |||||
(s->iformat && !s->iformat->get_device_list)) { | |||||
*device_list = NULL; | |||||
return AVERROR(ENOSYS); | |||||
} | |||||
*device_list = av_mallocz(sizeof(AVDeviceInfoList)); | |||||
if (!(*device_list)) | |||||
return AVERROR(ENOMEM); | |||||
if (s->oformat) | |||||
return s->oformat->get_device_list(s, *device_list); | |||||
return s->iformat->get_device_list(s, *device_list); | |||||
} | |||||
void avdevice_free_list_devices(AVDeviceInfoList **device_list) | |||||
{ | |||||
AVDeviceInfoList *list; | |||||
AVDeviceInfo *dev; | |||||
int i; | |||||
av_assert0(device_list); | |||||
list = *device_list; | |||||
if (!list) | |||||
return; | |||||
for (i = 0; i < list->nb_devices; i++) { | |||||
dev = list->devices[i]; | |||||
if (dev) { | |||||
av_free(dev->device_name); | |||||
av_free(dev->device_description); | |||||
av_free(dev); | |||||
} | |||||
} | |||||
av_free(list->devices); | |||||
av_freep(device_list); | |||||
} |
@@ -191,4 +191,43 @@ int avdevice_dev_to_app_control_message(struct AVFormatContext *s, | |||||
enum AVDevToAppMessageType type, | enum AVDevToAppMessageType type, | ||||
void *data, size_t data_size); | void *data, size_t data_size); | ||||
/** | |||||
* Structure describes basic parameters of the device. | |||||
*/ | |||||
typedef struct AVDeviceInfo { | |||||
char *device_name; /**< device name, format depends on device */ | |||||
char *device_description; /**< human friendly name */ | |||||
} AVDeviceInfo; | |||||
/** | |||||
* List of devices. | |||||
*/ | |||||
typedef struct AVDeviceInfoList { | |||||
AVDeviceInfo **devices; /**< list of autodetected devices */ | |||||
int nb_devices; /**< number of autodetected devices */ | |||||
int default_device; /**< index of default device or -1 if no default */ | |||||
} AVDeviceInfoList; | |||||
/** | |||||
* List devices. | |||||
* | |||||
* Returns available device names and their parameters. | |||||
* | |||||
* @note: Some devices may accept system-dependent device names that cannot be | |||||
* autodetected. The list returned by this function cannot be assumed to | |||||
* be always completed. | |||||
* | |||||
* @param s device context. | |||||
* @param[out] device_list list of autodetected devices. | |||||
* @return count of autodetected devices, negative on error. | |||||
*/ | |||||
int avdevice_list_devices(struct AVFormatContext *s, AVDeviceInfoList **device_list); | |||||
/** | |||||
* Convinient function to free result of avdevice_list_devices(). | |||||
* | |||||
* @param devices device list to be freed. | |||||
*/ | |||||
void avdevice_free_list_devices(AVDeviceInfoList **device_list); | |||||
#endif /* AVDEVICE_AVDEVICE_H */ | #endif /* AVDEVICE_AVDEVICE_H */ |
@@ -28,8 +28,8 @@ | |||||
#include "libavutil/version.h" | #include "libavutil/version.h" | ||||
#define LIBAVDEVICE_VERSION_MAJOR 55 | #define LIBAVDEVICE_VERSION_MAJOR 55 | ||||
#define LIBAVDEVICE_VERSION_MINOR 9 | |||||
#define LIBAVDEVICE_VERSION_MICRO 101 | |||||
#define LIBAVDEVICE_VERSION_MINOR 10 | |||||
#define LIBAVDEVICE_VERSION_MICRO 100 | |||||
#define LIBAVDEVICE_VERSION_INT AV_VERSION_INT(LIBAVDEVICE_VERSION_MAJOR, \ | #define LIBAVDEVICE_VERSION_INT AV_VERSION_INT(LIBAVDEVICE_VERSION_MAJOR, \ | ||||
LIBAVDEVICE_VERSION_MINOR, \ | LIBAVDEVICE_VERSION_MINOR, \ | ||||
@@ -261,6 +261,7 @@ | |||||
struct AVFormatContext; | struct AVFormatContext; | ||||
struct AVDeviceInfoList; | |||||
/** | /** | ||||
* @defgroup metadata_api Public Metadata API | * @defgroup metadata_api Public Metadata API | ||||
@@ -523,6 +524,11 @@ typedef struct AVOutputFormat { | |||||
*/ | */ | ||||
int (*write_uncoded_frame)(struct AVFormatContext *, int stream_index, | int (*write_uncoded_frame)(struct AVFormatContext *, int stream_index, | ||||
AVFrame **frame, unsigned flags); | AVFrame **frame, unsigned flags); | ||||
/** | |||||
* Returns device list with it properties. | |||||
* @see avdevice_list_devices() for more details. | |||||
*/ | |||||
int (*get_device_list)(struct AVFormatContext *s, struct AVDeviceInfoList *device_list); | |||||
} AVOutputFormat; | } AVOutputFormat; | ||||
/** | /** | ||||
* @} | * @} | ||||
@@ -651,6 +657,12 @@ typedef struct AVInputFormat { | |||||
* Active streams are all streams that have AVStream.discard < AVDISCARD_ALL. | * Active streams are all streams that have AVStream.discard < AVDISCARD_ALL. | ||||
*/ | */ | ||||
int (*read_seek2)(struct AVFormatContext *s, int stream_index, int64_t min_ts, int64_t ts, int64_t max_ts, int flags); | int (*read_seek2)(struct AVFormatContext *s, int stream_index, int64_t min_ts, int64_t ts, int64_t max_ts, int flags); | ||||
/** | |||||
* Returns device list with it properties. | |||||
* @see avdevice_list_devices() for more details. | |||||
*/ | |||||
int (*get_device_list)(struct AVFormatContext *s, struct AVDeviceInfoList *device_list); | |||||
} AVInputFormat; | } AVInputFormat; | ||||
/** | /** | ||||
* @} | * @} | ||||
@@ -30,8 +30,8 @@ | |||||
#include "libavutil/version.h" | #include "libavutil/version.h" | ||||
#define LIBAVFORMAT_VERSION_MAJOR 55 | #define LIBAVFORMAT_VERSION_MAJOR 55 | ||||
#define LIBAVFORMAT_VERSION_MINOR 32 | |||||
#define LIBAVFORMAT_VERSION_MICRO 101 | |||||
#define LIBAVFORMAT_VERSION_MINOR 33 | |||||
#define LIBAVFORMAT_VERSION_MICRO 100 | |||||
#define LIBAVFORMAT_VERSION_INT AV_VERSION_INT(LIBAVFORMAT_VERSION_MAJOR, \ | #define LIBAVFORMAT_VERSION_INT AV_VERSION_INT(LIBAVFORMAT_VERSION_MAJOR, \ | ||||
LIBAVFORMAT_VERSION_MINOR, \ | LIBAVFORMAT_VERSION_MINOR, \ | ||||