mirror of
https://github.com/xenia-project/FFmpeg.git
synced 2024-11-28 05:50:43 +00:00
lavc/utils: Introduce ff_bprint_to_codecpar_extradata for avformat
It will be used by text subtitle demuxers to construct format instructions straight into extradata. They all currently a similar function that accepts an AVCodecContext instead. Signed-off-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
This commit is contained in:
parent
06c4ed0c0e
commit
6518cbc52a
@ -22,6 +22,8 @@
|
||||
#define AVFORMAT_INTERNAL_H
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#include "libavutil/bprint.h"
|
||||
#include "avformat.h"
|
||||
#include "os_support.h"
|
||||
|
||||
@ -596,4 +598,9 @@ int ff_reshuffle_raw_rgb(AVFormatContext *s, AVPacket **ppkt, AVCodecContext *en
|
||||
*/
|
||||
int ff_get_packet_palette(AVFormatContext *s, AVPacket *pkt, int ret, uint32_t *palette);
|
||||
|
||||
/**
|
||||
* Finalize buf into extradata and set its size appropriately.
|
||||
*/
|
||||
int ff_bprint_to_codecpar_extradata(AVCodecParameters *par, struct AVBPrint *buf);
|
||||
|
||||
#endif /* AVFORMAT_INTERNAL_H */
|
||||
|
@ -4866,3 +4866,26 @@ int ff_get_packet_palette(AVFormatContext *s, AVPacket *pkt, int ret, uint32_t *
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int ff_bprint_to_codecpar_extradata(AVCodecParameters *par, struct AVBPrint *buf)
|
||||
{
|
||||
int ret;
|
||||
char *str;
|
||||
|
||||
ret = av_bprint_finalize(buf, &str);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
if (!av_bprint_is_complete(buf)) {
|
||||
av_free(str);
|
||||
return AVERROR(ENOMEM);
|
||||
}
|
||||
|
||||
par->extradata = str;
|
||||
/* Note: the string is NUL terminated (so extradata can be read as a
|
||||
* string), but the ending character is not accounted in the size (in
|
||||
* binary formats you are likely not supposed to mux that character). When
|
||||
* extradata is copied, it is also padded with AV_INPUT_BUFFER_PADDING_SIZE
|
||||
* zeros. */
|
||||
par->extradata_size = buf->len;
|
||||
return 0;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user