mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-01-24 13:56:33 +02:00
lavfi: use int64_t lists in AVFilteFormats
The list type was changed to int64_t to be able to hold channel layouts. avfilter_make_format_list() still takes a int32_t array and converts it to int64_t. A new function, avfilter_make_format64_list, that takes int64_t arrays has been added.
This commit is contained in:
parent
8f349b6481
commit
527ca3985c
@ -13,6 +13,14 @@ libavutil: 2011-04-18
|
|||||||
|
|
||||||
API changes, most recent first:
|
API changes, most recent first:
|
||||||
|
|
||||||
|
2011-06-19 - xxxxxxx - lavfi 2.22.0 - AVFilterFormats
|
||||||
|
Change type of AVFilterFormats.formats from int * to int64_t *,
|
||||||
|
and update formats handling API accordingly.
|
||||||
|
|
||||||
|
avfilter_make_format_list() still takes a int32_t array and converts
|
||||||
|
it to int64_t. A new function, avfilter_make_format64_list(), that
|
||||||
|
takes int64_t arrays has been added.
|
||||||
|
|
||||||
2011-06-19 - xxxxxxx - lavfi 2.21.0 - vsink_buffer.h
|
2011-06-19 - xxxxxxx - lavfi 2.21.0 - vsink_buffer.h
|
||||||
Add video sink buffer and vsink_buffer.h public header.
|
Add video sink buffer and vsink_buffer.h public header.
|
||||||
|
|
||||||
|
@ -26,7 +26,7 @@
|
|||||||
#include "libavutil/samplefmt.h"
|
#include "libavutil/samplefmt.h"
|
||||||
|
|
||||||
#define LIBAVFILTER_VERSION_MAJOR 2
|
#define LIBAVFILTER_VERSION_MAJOR 2
|
||||||
#define LIBAVFILTER_VERSION_MINOR 21
|
#define LIBAVFILTER_VERSION_MINOR 22
|
||||||
#define LIBAVFILTER_VERSION_MICRO 0
|
#define LIBAVFILTER_VERSION_MICRO 0
|
||||||
|
|
||||||
#define LIBAVFILTER_VERSION_INT AV_VERSION_INT(LIBAVFILTER_VERSION_MAJOR, \
|
#define LIBAVFILTER_VERSION_INT AV_VERSION_INT(LIBAVFILTER_VERSION_MAJOR, \
|
||||||
@ -223,7 +223,7 @@ void avfilter_unref_buffer(AVFilterBufferRef *ref);
|
|||||||
*/
|
*/
|
||||||
typedef struct AVFilterFormats {
|
typedef struct AVFilterFormats {
|
||||||
unsigned format_count; ///< number of formats
|
unsigned format_count; ///< number of formats
|
||||||
int *formats; ///< list of media formats
|
int64_t *formats; ///< list of media formats
|
||||||
|
|
||||||
unsigned refcount; ///< number of references to this list
|
unsigned refcount; ///< number of references to this list
|
||||||
struct AVFilterFormats ***refs; ///< references to this list
|
struct AVFilterFormats ***refs; ///< references to this list
|
||||||
@ -238,6 +238,7 @@ typedef struct AVFilterFormats {
|
|||||||
* @return the format list, with no existing references
|
* @return the format list, with no existing references
|
||||||
*/
|
*/
|
||||||
AVFilterFormats *avfilter_make_format_list(const int *fmts);
|
AVFilterFormats *avfilter_make_format_list(const int *fmts);
|
||||||
|
AVFilterFormats *avfilter_make_format64_list(const int64_t *fmts);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Add fmt to the list of media formats contained in *avff.
|
* Add fmt to the list of media formats contained in *avff.
|
||||||
@ -247,7 +248,7 @@ AVFilterFormats *avfilter_make_format_list(const int *fmts);
|
|||||||
* @return a non negative value in case of success, or a negative
|
* @return a non negative value in case of success, or a negative
|
||||||
* value corresponding to an AVERROR code in case of error
|
* value corresponding to an AVERROR code in case of error
|
||||||
*/
|
*/
|
||||||
int avfilter_add_format(AVFilterFormats **avff, int fmt);
|
int avfilter_add_format(AVFilterFormats **avff, int64_t fmt);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return a list of all formats supported by FFmpeg for the given media type.
|
* Return a list of all formats supported by FFmpeg for the given media type.
|
||||||
|
@ -72,28 +72,44 @@ AVFilterFormats *avfilter_merge_formats(AVFilterFormats *a, AVFilterFormats *b)
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#define MAKE_FORMAT_LIST() \
|
||||||
|
AVFilterFormats *formats; \
|
||||||
|
int count = 0; \
|
||||||
|
if (fmts) \
|
||||||
|
for (count = 0; fmts[count] != -1; count++) \
|
||||||
|
; \
|
||||||
|
formats = av_mallocz(sizeof(AVFilterFormats)); \
|
||||||
|
if (!formats) return NULL; \
|
||||||
|
formats->format_count = count; \
|
||||||
|
if (count) { \
|
||||||
|
formats->formats = av_malloc(sizeof(*formats->formats)*count); \
|
||||||
|
if (!formats->formats) { \
|
||||||
|
av_free(formats); \
|
||||||
|
return NULL; \
|
||||||
|
} \
|
||||||
|
}
|
||||||
|
|
||||||
AVFilterFormats *avfilter_make_format_list(const int *fmts)
|
AVFilterFormats *avfilter_make_format_list(const int *fmts)
|
||||||
{
|
{
|
||||||
AVFilterFormats *formats;
|
MAKE_FORMAT_LIST();
|
||||||
int count = 0;
|
while (count--)
|
||||||
|
formats->formats[count] = fmts[count];
|
||||||
if (fmts)
|
|
||||||
for (count = 0; fmts[count] != -1; count++)
|
|
||||||
;
|
|
||||||
|
|
||||||
formats = av_mallocz(sizeof(AVFilterFormats));
|
|
||||||
formats->format_count = count;
|
|
||||||
if (count) {
|
|
||||||
formats->formats = av_malloc(sizeof(*formats->formats) * count);
|
|
||||||
memcpy(formats->formats, fmts, sizeof(*formats->formats) * count);
|
|
||||||
}
|
|
||||||
|
|
||||||
return formats;
|
return formats;
|
||||||
}
|
}
|
||||||
|
|
||||||
int avfilter_add_format(AVFilterFormats **avff, int fmt)
|
AVFilterFormats *avfilter_make_format64_list(const int64_t *fmts)
|
||||||
{
|
{
|
||||||
int *fmts;
|
MAKE_FORMAT_LIST();
|
||||||
|
if (count)
|
||||||
|
memcpy(formats->formats, fmts, sizeof(*formats->formats) * count);
|
||||||
|
|
||||||
|
return formats;
|
||||||
|
}
|
||||||
|
|
||||||
|
int avfilter_add_format(AVFilterFormats **avff, int64_t fmt)
|
||||||
|
{
|
||||||
|
int64_t *fmts;
|
||||||
|
|
||||||
if (!(*avff) && !(*avff = av_mallocz(sizeof(AVFilterFormats))))
|
if (!(*avff) && !(*avff = av_mallocz(sizeof(AVFilterFormats))))
|
||||||
return AVERROR(ENOMEM);
|
return AVERROR(ENOMEM);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user