fftools/ffmpeg: stop using AVStream.side_data
Signed-off-by: James Almer <jamrial@gmail.com>
This commit is contained in:
parent
e500eb5a95
commit
3fd37b5268
@ -482,8 +482,8 @@ static int input_packet_process(Demuxer *d, DemuxMsg *msg, AVPacket *src)
|
|||||||
|
|
||||||
/* add the stream-global side data to the first packet */
|
/* add the stream-global side data to the first packet */
|
||||||
if (ds->nb_packets == 1) {
|
if (ds->nb_packets == 1) {
|
||||||
for (int i = 0; i < ist->st->nb_side_data; i++) {
|
for (int i = 0; i < ist->st->codecpar->nb_coded_side_data; i++) {
|
||||||
AVPacketSideData *src_sd = &ist->st->side_data[i];
|
AVPacketSideData *src_sd = &ist->st->codecpar->coded_side_data[i];
|
||||||
uint8_t *dst_data;
|
uint8_t *dst_data;
|
||||||
|
|
||||||
if (src_sd->type == AV_PKT_DATA_DISPLAYMATRIX)
|
if (src_sd->type == AV_PKT_DATA_DISPLAYMATRIX)
|
||||||
@ -979,6 +979,7 @@ static int add_display_matrix_to_stream(const OptionsContext *o,
|
|||||||
AVFormatContext *ctx, InputStream *ist)
|
AVFormatContext *ctx, InputStream *ist)
|
||||||
{
|
{
|
||||||
AVStream *st = ist->st;
|
AVStream *st = ist->st;
|
||||||
|
AVPacketSideData *sd;
|
||||||
double rotation = DBL_MAX;
|
double rotation = DBL_MAX;
|
||||||
int hflip = -1, vflip = -1;
|
int hflip = -1, vflip = -1;
|
||||||
int hflip_set = 0, vflip_set = 0, rotation_set = 0;
|
int hflip_set = 0, vflip_set = 0, rotation_set = 0;
|
||||||
@ -995,12 +996,16 @@ static int add_display_matrix_to_stream(const OptionsContext *o,
|
|||||||
if (!rotation_set && !hflip_set && !vflip_set)
|
if (!rotation_set && !hflip_set && !vflip_set)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
buf = (int32_t *)av_stream_new_side_data(st, AV_PKT_DATA_DISPLAYMATRIX, sizeof(int32_t) * 9);
|
sd = av_packet_side_data_new(&st->codecpar->coded_side_data,
|
||||||
if (!buf) {
|
&st->codecpar->nb_coded_side_data,
|
||||||
|
AV_PKT_DATA_DISPLAYMATRIX,
|
||||||
|
sizeof(int32_t) * 9, 0);
|
||||||
|
if (!sd) {
|
||||||
av_log(ist, AV_LOG_FATAL, "Failed to generate a display matrix!\n");
|
av_log(ist, AV_LOG_FATAL, "Failed to generate a display matrix!\n");
|
||||||
return AVERROR(ENOMEM);
|
return AVERROR(ENOMEM);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
buf = (int32_t *)sd->data;
|
||||||
av_display_rotation_set(buf,
|
av_display_rotation_set(buf,
|
||||||
rotation_set ? -(rotation) : -0.0f);
|
rotation_set ? -(rotation) : -0.0f);
|
||||||
|
|
||||||
|
@ -457,20 +457,6 @@ int enc_open(OutputStream *ost, AVFrame *frame)
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ost->enc_ctx->nb_coded_side_data) {
|
|
||||||
int i;
|
|
||||||
|
|
||||||
for (i = 0; i < ost->enc_ctx->nb_coded_side_data; i++) {
|
|
||||||
const AVPacketSideData *sd_src = &ost->enc_ctx->coded_side_data[i];
|
|
||||||
uint8_t *dst_data;
|
|
||||||
|
|
||||||
dst_data = av_stream_new_side_data(ost->st, sd_src->type, sd_src->size);
|
|
||||||
if (!dst_data)
|
|
||||||
return AVERROR(ENOMEM);
|
|
||||||
memcpy(dst_data, sd_src->data, sd_src->size);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Add global input side data. For now this is naive, and copies it
|
* Add global input side data. For now this is naive, and copies it
|
||||||
* from the input stream's global side data. All side data should
|
* from the input stream's global side data. All side data should
|
||||||
@ -480,15 +466,17 @@ int enc_open(OutputStream *ost, AVFrame *frame)
|
|||||||
*/
|
*/
|
||||||
if (ist) {
|
if (ist) {
|
||||||
int i;
|
int i;
|
||||||
for (i = 0; i < ist->st->nb_side_data; i++) {
|
for (i = 0; i < ist->st->codecpar->nb_coded_side_data; i++) {
|
||||||
AVPacketSideData *sd = &ist->st->side_data[i];
|
AVPacketSideData *sd_src = &ist->st->codecpar->coded_side_data[i];
|
||||||
if (sd->type != AV_PKT_DATA_CPB_PROPERTIES) {
|
if (sd_src->type != AV_PKT_DATA_CPB_PROPERTIES) {
|
||||||
uint8_t *dst = av_stream_new_side_data(ost->st, sd->type, sd->size);
|
AVPacketSideData *sd_dst = av_packet_side_data_new(&ost->par_in->coded_side_data,
|
||||||
if (!dst)
|
&ost->par_in->nb_coded_side_data,
|
||||||
|
sd_src->type, sd_src->size, 0);
|
||||||
|
if (!sd_dst)
|
||||||
return AVERROR(ENOMEM);
|
return AVERROR(ENOMEM);
|
||||||
memcpy(dst, sd->data, sd->size);
|
memcpy(sd_dst->data, sd_src->data, sd_src->size);
|
||||||
if (ist->autorotate && sd->type == AV_PKT_DATA_DISPLAYMATRIX)
|
if (ist->autorotate && sd_src->type == AV_PKT_DATA_DISPLAYMATRIX)
|
||||||
av_display_rotation_set((int32_t *)dst, 0);
|
av_display_rotation_set((int32_t *)sd_dst->data, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1383,11 +1383,16 @@ static int configure_input_video_filter(FilterGraph *fg, InputFilter *ifilter,
|
|||||||
|
|
||||||
// TODO: insert hwaccel enabled filters like transpose_vaapi into the graph
|
// TODO: insert hwaccel enabled filters like transpose_vaapi into the graph
|
||||||
if (ist->autorotate && !(desc->flags & AV_PIX_FMT_FLAG_HWACCEL)) {
|
if (ist->autorotate && !(desc->flags & AV_PIX_FMT_FLAG_HWACCEL)) {
|
||||||
|
const AVPacketSideData *sd = NULL;
|
||||||
int32_t *displaymatrix = ifp->displaymatrix;
|
int32_t *displaymatrix = ifp->displaymatrix;
|
||||||
double theta;
|
double theta;
|
||||||
|
|
||||||
if (!ifp->displaymatrix_present)
|
if (!ifp->displaymatrix_present)
|
||||||
displaymatrix = (int32_t *)av_stream_get_side_data(ist->st, AV_PKT_DATA_DISPLAYMATRIX, NULL);
|
sd = av_packet_side_data_get(ist->st->codecpar->coded_side_data,
|
||||||
|
ist->st->codecpar->nb_coded_side_data,
|
||||||
|
AV_PKT_DATA_DISPLAYMATRIX);
|
||||||
|
if (sd)
|
||||||
|
displaymatrix = (int32_t *)sd->data;
|
||||||
theta = get_rotation(displaymatrix);
|
theta = get_rotation(displaymatrix);
|
||||||
|
|
||||||
if (fabs(theta - 90) < 1.0) {
|
if (fabs(theta - 90) < 1.0) {
|
||||||
|
@ -1045,24 +1045,28 @@ static int streamcopy_init(const Muxer *mux, OutputStream *ost)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for (int i = 0; i < ist->st->nb_side_data; i++) {
|
for (int i = 0; i < ist->st->codecpar->nb_coded_side_data; i++) {
|
||||||
const AVPacketSideData *sd_src = &ist->st->side_data[i];
|
const AVPacketSideData *sd_src = &ist->st->codecpar->coded_side_data[i];
|
||||||
uint8_t *dst_data;
|
AVPacketSideData *sd_dst;
|
||||||
|
|
||||||
dst_data = av_stream_new_side_data(ost->st, sd_src->type, sd_src->size);
|
sd_dst = av_packet_side_data_new(&ost->st->codecpar->coded_side_data,
|
||||||
if (!dst_data) {
|
&ost->st->codecpar->nb_coded_side_data,
|
||||||
|
sd_src->type, sd_src->size, 0);
|
||||||
|
if (!sd_dst) {
|
||||||
ret = AVERROR(ENOMEM);
|
ret = AVERROR(ENOMEM);
|
||||||
goto fail;
|
goto fail;
|
||||||
}
|
}
|
||||||
memcpy(dst_data, sd_src->data, sd_src->size);
|
memcpy(sd_dst->data, sd_src->data, sd_src->size);
|
||||||
}
|
}
|
||||||
|
|
||||||
#if FFMPEG_ROTATION_METADATA
|
#if FFMPEG_ROTATION_METADATA
|
||||||
if (ost->rotate_overridden) {
|
if (ost->rotate_overridden) {
|
||||||
uint8_t *sd = av_stream_new_side_data(ost->st, AV_PKT_DATA_DISPLAYMATRIX,
|
AVPacketSideData *sd = av_packet_side_data_new(&ost->st->codecpar->coded_side_data,
|
||||||
sizeof(int32_t) * 9);
|
&ost->st->codecpar->nb_coded_side_data,
|
||||||
|
AV_PKT_DATA_DISPLAYMATRIX,
|
||||||
|
sizeof(int32_t) * 9, 0);
|
||||||
if (sd)
|
if (sd)
|
||||||
av_display_rotation_set((int32_t *)sd, -ost->rotate_override_value);
|
av_display_rotation_set((int32_t *)sd->data, -ost->rotate_override_value);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user