mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-01-13 21:28:01 +02:00
Merge remote-tracking branch 'lukaszmluki/master'
* lukaszmluki/master: lavd: add list devices API lavd/opengl_enc_shaders: fix gray* shader Conflicts: doc/APIchanges Merged-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
commit
38a08e0aea
@ -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-16 - db3c970 - lavf 55.33.100 - avio.h
|
2014-02-16 - db3c970 - lavf 55.33.100 - avio.h
|
||||||
Add avio_find_protocol_name() to find out the name of the protocol that would
|
Add avio_find_protocol_name() to find out the name of the protocol that would
|
||||||
be selected for a given URL.
|
be selected for a given URL.
|
||||||
|
@ -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 */
|
||||||
|
@ -181,7 +181,7 @@ static const char * const FF_OPENGL_FRAGMENT_SHADER_GRAY =
|
|||||||
"varying vec2 texture_coordinate;"
|
"varying vec2 texture_coordinate;"
|
||||||
"void main()"
|
"void main()"
|
||||||
"{"
|
"{"
|
||||||
"float c = texture2D(u_texture0, texture_coordinate);"
|
"float c = texture2D(u_texture0, texture_coordinate).r;"
|
||||||
"gl_FragColor = vec4(c, c, c, 1.0);"
|
"gl_FragColor = vec4(c, c, c, 1.0);"
|
||||||
"}";
|
"}";
|
||||||
|
|
||||||
|
@ -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_MINOR 10
|
||||||
#define LIBAVDEVICE_VERSION_MICRO 101
|
#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;
|
||||||
/**
|
/**
|
||||||
* @}
|
* @}
|
||||||
|
Loading…
Reference in New Issue
Block a user