[FFmpeg-cvslog] avformat/matroskaenc: Ignore AttachedFiles for track limit

2020-04-13 Thread Andreas Rheinhardt
ffmpeg | branch: master | Andreas Rheinhardt  | 
Wed Nov 27 05:00:04 2019 +0100| [629f08a8632bf622ea7521b6de63eb8f9502fd4a] | 
committer: Andreas Rheinhardt

avformat/matroskaenc: Ignore AttachedFiles for track limit

Attachments are streams in FFmpeg, but they are not tracks in Matroska.
Yet they were counted when checking a limit for the number of tracks that
the Matroska muxer imposes. This is unnecessary and has been changed.

Also use unsigned variables for the variables denoting TrackNumbers as
negative TrackNumbers are impossible.

(The Matroska file format actually has practically no limit on the
number of tracks and this is purely what our muxer supports. But even if
this limit were removed/relaxed in the future, it still makes sense to
use small TrackNumbers as this patch does, because greater numbers need
more bytes to encode.)

Signed-off-by: Andreas Rheinhardt 

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=629f08a8632bf622ea7521b6de63eb8f9502fd4a
---

 libavformat/matroskaenc.c | 39 ---
 1 file changed, 24 insertions(+), 15 deletions(-)

diff --git a/libavformat/matroskaenc.c b/libavformat/matroskaenc.c
index 7df7526b02..58948ecbf4 100644
--- a/libavformat/matroskaenc.c
+++ b/libavformat/matroskaenc.c
@@ -93,6 +93,7 @@ typedef struct mkv_track {
 int write_dts;
 int has_cue;
 uint64_tuid;
+unsignedtrack_num;
 int sample_rate;
 int64_t sample_rate_offset;
 int64_t last_timestamp;
@@ -1110,8 +,7 @@ static int mkv_write_track(AVFormatContext *s, 
MatroskaMuxContext *mkv,
 }
 
 track = start_ebml_master(pb, MATROSKA_ID_TRACKENTRY, 0);
-put_ebml_uint (pb, MATROSKA_ID_TRACKNUMBER,
-   mkv->is_dash ? mkv->dash_track_number : i + 1);
+put_ebml_uint (pb, MATROSKA_ID_TRACKNUMBER, mkv->tracks[i].track_num);
 put_ebml_uid  (pb, MATROSKA_ID_TRACKUID, mkv->tracks[i].uid);
 put_ebml_uint (pb, MATROSKA_ID_TRACKFLAGLACING , 0);// no lacing (yet)
 
@@ -1964,7 +1964,7 @@ static int mkv_write_block(AVFormatContext *s, 
AVIOContext *pb,
 int64_t ts = track->write_dts ? pkt->dts : pkt->pts;
 uint64_t additional_id;
 int64_t discard_padding = 0;
-uint8_t track_number = (mkv->is_dash ? mkv->dash_track_number : 
(pkt->stream_index + 1));
+unsigned track_number = track->track_num;
 ebml_master block_group, block_additions, block_more;
 
 ts += track->ts_offset;
@@ -1974,7 +1974,7 @@ static int mkv_write_block(AVFormatContext *s, 
AVIOContext *pb,
 av_log(s, AV_LOG_DEBUG,
"Writing block of size %d with pts %" PRId64 ", dts %" PRId64 ", "
"duration %" PRId64 " at relative offset %" PRId64 " in cluster "
-   "at offset %" PRId64 ". TrackNumber %d, keyframe %d\n",
+   "at offset %" PRId64 ". TrackNumber %u, keyframe %d\n",
pkt->size, pkt->pts, pkt->dts, pkt->duration, avio_tell(pb),
mkv->cluster_pos, track_number, keyframe != 0);
 
@@ -2072,6 +2072,7 @@ static int mkv_write_block(AVFormatContext *s, 
AVIOContext *pb,
 static int mkv_write_vtt_blocks(AVFormatContext *s, AVIOContext *pb, AVPacket 
*pkt)
 {
 MatroskaMuxContext *mkv = s->priv_data;
+mkv_track *track = &mkv->tracks[pkt->stream_index];
 ebml_master blockgroup;
 int id_size, settings_size, size;
 uint8_t *id, *settings;
@@ -2093,15 +2094,15 @@ static int mkv_write_vtt_blocks(AVFormatContext *s, 
AVIOContext *pb, AVPacket *p
 av_log(s, AV_LOG_DEBUG,
"Writing block of size %d with pts %" PRId64 ", dts %" PRId64 ", "
"duration %" PRId64 " at relative offset %" PRId64 " in cluster "
-   "at offset %" PRId64 ". TrackNumber %d, keyframe %d\n",
+   "at offset %" PRId64 ". TrackNumber %u, keyframe %d\n",
size, pkt->pts, pkt->dts, pkt->duration, avio_tell(pb),
-   mkv->cluster_pos, pkt->stream_index + 1, 1);
+   mkv->cluster_pos, track->track_num, 1);
 
 blockgroup = start_ebml_master(pb, MATROSKA_ID_BLOCKGROUP, 
mkv_blockgroup_size(size));
 
 put_ebml_id(pb, MATROSKA_ID_BLOCK);
 put_ebml_num(pb, size + 4, 0);
-avio_w8(pb, 0x80 | (pkt->stream_index + 1)); // this assumes 
stream_index is less than 126
+avio_w8(pb, 0x80 | track->track_num); // this assumes track_num is 
less than 126
 avio_wb16(pb, ts - mkv->cluster_pts);
 avio_w8(pb, flags);
 avio_printf(pb, "%.*s\n%.*s\n%.*s", id_size, id, settings_size, settings, 
pkt->size, pkt->data);
@@ -2230,7 +2231,7 @@ static int mkv_write_packet_internal(AVFormatContext *s, 
AVPacket *pkt, int add_
 int ret;
 int64_t ts = track->write_dts ? pkt->dts : pkt->pts;
 int64_t relative_packet_pos;
-int tracknum = mkv->is_dash ? mkv->dash_track_number : pkt->stream_index + 
1;
+unsigned tracknum = track->track_num;
 
 if (ts == AV_NOPTS_VALUE) {
 av_log(s, AV_LOG_ERROR, "Can't write packet w

[FFmpeg-cvslog] avformat/matroskaenc: Automatically use right TrackNumber in Cues

2020-04-13 Thread Andreas Rheinhardt
ffmpeg | branch: master | Andreas Rheinhardt  | 
Tue Dec 31 22:05:57 2019 +0100| [385964409a62158c7ad5226f1c1d4adc160ea830] | 
committer: Andreas Rheinhardt

avformat/matroskaenc: Automatically use right TrackNumber in Cues

mkv_cuepoint (the structure used to store the index entries in the
Matroska muxer) currently contains fields for both the index of the
packet's stream in the AVFormatContext.streams array and for the
Matroska TrackNumber; correspondingly, mkv_add_cuepoint() has parameters
for both. But these two numbers can't be chosen independently, so get
rid of the TrackNumber.

Signed-off-by: Andreas Rheinhardt 

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=385964409a62158c7ad5226f1c1d4adc160ea830
---

 libavformat/matroskaenc.c | 11 ---
 1 file changed, 4 insertions(+), 7 deletions(-)

diff --git a/libavformat/matroskaenc.c b/libavformat/matroskaenc.c
index 58948ecbf4..5ba8fea59a 100644
--- a/libavformat/matroskaenc.c
+++ b/libavformat/matroskaenc.c
@@ -78,7 +78,6 @@ typedef struct mkv_seekhead {
 typedef struct mkv_cuepoint {
 uint64_tpts;
 int stream_idx;
-int tracknum;
 int64_t cluster_pos;///< offset of the cluster containing 
the block relative to the segment
 int64_t relative_pos;   ///< relative offset from the position 
of the cluster containing the block
 int64_t duration;   ///< duration of the block according 
to time base
@@ -477,7 +476,7 @@ static int mkv_write_seekhead(AVIOContext *pb, 
MatroskaMuxContext *mkv,
 return 0;
 }
 
-static int mkv_add_cuepoint(MatroskaMuxContext *mkv, int stream, int tracknum, 
int64_t ts,
+static int mkv_add_cuepoint(MatroskaMuxContext *mkv, int stream, int64_t ts,
 int64_t cluster_pos, int64_t relative_pos, int64_t 
duration)
 {
 mkv_cues *cues = &mkv->cues;
@@ -493,7 +492,6 @@ static int mkv_add_cuepoint(MatroskaMuxContext *mkv, int 
stream, int tracknum, i
 
 cues->entries[cues->num_entries].pts   = ts;
 cues->entries[cues->num_entries].stream_idx= stream;
-cues->entries[cues->num_entries].tracknum  = tracknum;
 cues->entries[cues->num_entries].cluster_pos   = cluster_pos - 
mkv->segment_offset;
 cues->entries[cues->num_entries].relative_pos  = relative_pos;
 cues->entries[cues->num_entries++].duration= duration;
@@ -532,7 +530,7 @@ static int mkv_assemble_cues(AVStream **streams, 
AVIOContext *dyn_cp,
 continue;
 tracks[idx].has_cue = 1;
 track_positions = start_ebml_master(cuepoint, 
MATROSKA_ID_CUETRACKPOSITION, MAX_CUETRACKPOS_SIZE);
-put_ebml_uint(cuepoint, MATROSKA_ID_CUETRACK   , 
entry->tracknum   );
+put_ebml_uint(cuepoint, MATROSKA_ID_CUETRACK   , 
tracks[idx].track_num);
 put_ebml_uint(cuepoint, MATROSKA_ID_CUECLUSTERPOSITION , 
entry->cluster_pos);
 put_ebml_uint(cuepoint, MATROSKA_ID_CUERELATIVEPOSITION, 
entry->relative_pos);
 if (entry->duration != -1)
@@ -2231,7 +2229,6 @@ static int mkv_write_packet_internal(AVFormatContext *s, 
AVPacket *pkt, int add_
 int ret;
 int64_t ts = track->write_dts ? pkt->dts : pkt->pts;
 int64_t relative_packet_pos;
-unsigned tracknum = track->track_num;
 
 if (ts == AV_NOPTS_VALUE) {
 av_log(s, AV_LOG_ERROR, "Can't write packet with unknown timestamp\n");
@@ -2268,7 +2265,7 @@ static int mkv_write_packet_internal(AVFormatContext *s, 
AVPacket *pkt, int add_
 if (ret < 0)
 return ret;
 if ((s->pb->seekable & AVIO_SEEKABLE_NORMAL) && (par->codec_type == 
AVMEDIA_TYPE_VIDEO && keyframe || add_cue)) {
-ret = mkv_add_cuepoint(mkv, pkt->stream_index, tracknum, ts,
+ret = mkv_add_cuepoint(mkv, pkt->stream_index, ts,
mkv->cluster_pos, relative_packet_pos, -1);
 if (ret < 0) return ret;
 }
@@ -2294,7 +2291,7 @@ FF_ENABLE_DEPRECATION_WARNINGS
 }
 
 if (s->pb->seekable & AVIO_SEEKABLE_NORMAL) {
-ret = mkv_add_cuepoint(mkv, pkt->stream_index, tracknum, ts,
+ret = mkv_add_cuepoint(mkv, pkt->stream_index, ts,
mkv->cluster_pos, relative_packet_pos, 
duration);
 if (ret < 0)
 return ret;

___
ffmpeg-cvslog mailing list
ffmpeg-cvslog@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog

To unsubscribe, visit link above, or email
ffmpeg-cvslog-requ...@ffmpeg.org with subject "unsubscribe".

[FFmpeg-cvslog] avformat/matroskaenc: Change signature of mkv_write_track()

2020-04-13 Thread Andreas Rheinhardt
ffmpeg | branch: master | Andreas Rheinhardt  | 
Sat Jan 18 09:31:01 2020 +0100| [59e3a9aede5e2f9271c82583d8724c272ce33a0a] | 
committer: Andreas Rheinhardt

avformat/matroskaenc: Change signature of mkv_write_track()

Up until now, mkv_write_track() received the index of the stream whose
header data it is about to write as parameter; this index has until
recently been explicitly used to generate both TrackNumber and TrackUID.
But this is no longer so and as there is no reason why the function
for writing a single TrackEntry should even know the index of the
TrackEntry it is about to write, said index is replaced in the list of
function parameters by the corresponding AVStream and mkv_track.

Signed-off-by: Andreas Rheinhardt 

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=59e3a9aede5e2f9271c82583d8724c272ce33a0a
---

 libavformat/matroskaenc.c | 30 --
 1 file changed, 16 insertions(+), 14 deletions(-)

diff --git a/libavformat/matroskaenc.c b/libavformat/matroskaenc.c
index 5ba8fea59a..d0a02c0f5d 100644
--- a/libavformat/matroskaenc.c
+++ b/libavformat/matroskaenc.c
@@ -1081,11 +1081,11 @@ static int mkv_write_stereo_mode(AVFormatContext *s, 
AVIOContext *pb,
 }
 
 static int mkv_write_track(AVFormatContext *s, MatroskaMuxContext *mkv,
-   int i, AVIOContext *pb, int default_stream_exists)
+   AVStream *st, mkv_track *track, AVIOContext *pb,
+   int default_stream_exists)
 {
-AVStream *st = s->streams[i];
 AVCodecParameters *par = st->codecpar;
-ebml_master subinfo, track;
+ebml_master subinfo, track_master;
 int native_id = 0;
 int qt_id = 0;
 int bit_depth;
@@ -1108,9 +1108,9 @@ static int mkv_write_track(AVFormatContext *s, 
MatroskaMuxContext *mkv,
 return ret;
 }
 
-track = start_ebml_master(pb, MATROSKA_ID_TRACKENTRY, 0);
-put_ebml_uint (pb, MATROSKA_ID_TRACKNUMBER, mkv->tracks[i].track_num);
-put_ebml_uid  (pb, MATROSKA_ID_TRACKUID, mkv->tracks[i].uid);
+track_master = start_ebml_master(pb, MATROSKA_ID_TRACKENTRY, 0);
+put_ebml_uint(pb, MATROSKA_ID_TRACKNUMBER, track->track_num);
+put_ebml_uid (pb, MATROSKA_ID_TRACKUID,track->uid);
 put_ebml_uint (pb, MATROSKA_ID_TRACKFLAGLACING , 0);// no lacing (yet)
 
 if ((tag = av_dict_get(st->metadata, "title", NULL, 0)))
@@ -1207,7 +1207,7 @@ static int mkv_write_track(AVFormatContext *s, 
MatroskaMuxContext *mkv,
 else if (!native_id) {
 // if there is no mkv-specific codec ID, use VFW mode
 put_ebml_string(pb, MATROSKA_ID_CODECID, "V_MS/VFW/FOURCC");
-mkv->tracks[i].write_dts = 1;
+track->write_dts = 1;
 s->internal->avoid_negative_ts_use_pts = 0;
 }
 
@@ -1283,9 +1283,9 @@ static int mkv_write_track(AVFormatContext *s, 
MatroskaMuxContext *mkv,
 av_log(s, AV_LOG_ERROR, "Initial padding is invalid\n");
 return AVERROR(EINVAL);
 }
-//mkv->tracks[i].ts_offset = av_rescale_q(par->initial_padding,
-//(AVRational){ 1, 
par->sample_rate },
-//st->time_base);
+//track->ts_offset = av_rescale_q(par->initial_padding,
+//(AVRational){ 1, 
par->sample_rate },
+//st->time_base);
 
 put_ebml_uint(pb, MATROSKA_ID_CODECDELAY, codecdelay);
 }
@@ -1301,7 +1301,7 @@ static int mkv_write_track(AVFormatContext *s, 
MatroskaMuxContext *mkv,
 subinfo = start_ebml_master(pb, MATROSKA_ID_TRACKAUDIO, 0);
 put_ebml_uint  (pb, MATROSKA_ID_AUDIOCHANNELS, par->channels);
 
-mkv->tracks[i].sample_rate_offset = avio_tell(pb);
+track->sample_rate_offset = avio_tell(pb);
 put_ebml_float (pb, MATROSKA_ID_AUDIOSAMPLINGFREQ, sample_rate);
 if (output_sample_rate)
 put_ebml_float(pb, MATROSKA_ID_AUDIOOUTSAMPLINGFREQ, 
output_sample_rate);
@@ -1337,13 +1337,13 @@ static int mkv_write_track(AVFormatContext *s, 
MatroskaMuxContext *mkv,
 }
 
 if (mkv->mode != MODE_WEBM || par->codec_id != AV_CODEC_ID_WEBVTT) {
-mkv->tracks[i].codecpriv_offset = avio_tell(pb);
+track->codecpriv_offset = avio_tell(pb);
 ret = mkv_write_codecprivate(s, pb, par, native_id, qt_id);
 if (ret < 0)
 return ret;
 }
 
-end_ebml_master(pb, track);
+end_ebml_master(pb, track_master);
 
 return 0;
 }
@@ -1365,7 +1365,9 @@ static int mkv_write_tracks(AVFormatContext *s)
 default_stream_exists |= st->disposition & AV_DISPOSITION_DEFAULT;
 }
 for (i = 0; i < s->nb_streams; i++) {
-ret = mkv_write_track(s, mkv, i, mkv->tracks_bc, 
default_stream_exists);
+AVStream *st = s->streams[i];
+ret = mkv_write_track(s, mkv, s

[FFmpeg-cvslog] lavc/vaapi_decode: fix the build failure when hevc_vaapi is disabled

2020-04-13 Thread Linjie Fu
ffmpeg | branch: master | Linjie Fu  | Sun Apr 12 23:47:00 
2020 +0800| [798ab1d03e8df06f2c7dd9a01bb303f368df5de4] | committer: Mark 
Thompson

lavc/vaapi_decode: fix the build failure when hevc_vaapi is disabled

Verified with ./configure --enable-vaapi --disable-hwaccel=hevc_vaapi

Failure reported in:
http://fate.ffmpeg.org/report.cgi?time=20200401135031&slot=x86_64-archlinux-gcc-random

Signed-off-by: Linjie Fu 

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=798ab1d03e8df06f2c7dd9a01bb303f368df5de4
---

 libavcodec/vaapi_decode.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/libavcodec/vaapi_decode.c b/libavcodec/vaapi_decode.c
index 54a0ecb47a..5e4f62baad 100644
--- a/libavcodec/vaapi_decode.c
+++ b/libavcodec/vaapi_decode.c
@@ -389,7 +389,7 @@ static const struct {
 MAP(HEVC,HEVC_MAIN_STILL_PICTURE,
   HEVCMain),
 #endif
-#if VA_CHECK_VERSION(1, 2, 0)
+#if VA_CHECK_VERSION(1, 2, 0) && CONFIG_HEVC_VAAPI_HWACCEL
 MAP(HEVC,HEVC_REXT,   None,
  ff_vaapi_parse_hevc_rext_profile ),
 #endif

___
ffmpeg-cvslog mailing list
ffmpeg-cvslog@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog

To unsubscribe, visit link above, or email
ffmpeg-cvslog-requ...@ffmpeg.org with subject "unsubscribe".

[FFmpeg-cvslog] avfilter/vf_mix: check if array is available

2020-04-13 Thread Paul B Mahol
ffmpeg | branch: master | Paul B Mahol  | Mon Apr 13 16:44:01 
2020 +0200| [70f866ad1ba6737d9a1a79d2531412ca91687ba1] | committer: Paul B Mahol

avfilter/vf_mix: check if array is available

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=70f866ad1ba6737d9a1a79d2531412ca91687ba1
---

 libavfilter/vf_mix.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/libavfilter/vf_mix.c b/libavfilter/vf_mix.c
index 9e1ae79e00..f418c6fba8 100644
--- a/libavfilter/vf_mix.c
+++ b/libavfilter/vf_mix.c
@@ -289,7 +289,7 @@ static av_cold void uninit(AVFilterContext *ctx)
 for (i = 0; i < ctx->nb_inputs; i++)
 av_freep(&ctx->input_pads[i].name);
 } else {
-for (i = 0; i < s->nb_frames; i++)
+for (i = 0; i < s->nb_frames && s->frames; i++)
 av_frame_free(&s->frames[i]);
 }
 av_freep(&s->frames);

___
ffmpeg-cvslog mailing list
ffmpeg-cvslog@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog

To unsubscribe, visit link above, or email
ffmpeg-cvslog-requ...@ffmpeg.org with subject "unsubscribe".

[FFmpeg-cvslog] avformat/movenc: use enum values directly for colr atom

2020-04-13 Thread Michael Bradshaw
ffmpeg | branch: master | Michael Bradshaw  | Tue Mar 31 
09:36:31 2020 -0600| [b1699f4ac38cedef79f565ba3b8f9fdec952f412] | committer: 
Michael Bradshaw

avformat/movenc: use enum values directly for colr atom

The switch cases were missing:

  - Primaries: bt470m, film, smpte428, and ebu3213.
  - TRCs: gamma22, gamma28, linear, log, log_sqrt, iec61966_2_4, bt1361,
iec61966_2_1, bt2020_10bit, and bt2020_12bit.
  - Space: rgb, fcc, ycgco, bt2020_cl, smpte2085, chroma-derived-nc,
chroma-derived-c, and ictcp.

They also annoyingly remapped the following (which are functionally
equivalent but can be treated differently by clients):

  - smpte240m primaries to smpte170m.
  - smpte170m TRC to bt709.
  - bt470bg color space to smpte170m.

The enum values in FFmpeg are the same values as ITU-T H.273 and
ISO/IEC 23001-8 so we can just use them directly, which is both simpler
and preserves the user intent.

Signed-off-by: Michael Bradshaw 

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=b1699f4ac38cedef79f565ba3b8f9fdec952f412
---

 libavformat/movenc.c | 31 +++
 1 file changed, 3 insertions(+), 28 deletions(-)

diff --git a/libavformat/movenc.c b/libavformat/movenc.c
index 6db09b73e6..3042e3ccd2 100644
--- a/libavformat/movenc.c
+++ b/libavformat/movenc.c
@@ -1932,34 +1932,9 @@ static int mov_write_colr_tag(AVIOContext *pb, MOVTrack 
*track, int prefer_icc)
 ffio_wfourcc(pb, "nclx");
 else
 ffio_wfourcc(pb, "nclc");
-switch (track->par->color_primaries) {
-case AVCOL_PRI_BT709: avio_wb16(pb, 1); break;
-case AVCOL_PRI_BT470BG:   avio_wb16(pb, 5); break;
-case AVCOL_PRI_SMPTE170M:
-case AVCOL_PRI_SMPTE240M: avio_wb16(pb, 6); break;
-case AVCOL_PRI_BT2020:avio_wb16(pb, 9); break;
-case AVCOL_PRI_SMPTE431:  avio_wb16(pb, 11); break;
-case AVCOL_PRI_SMPTE432:  avio_wb16(pb, 12); break;
-default:  avio_wb16(pb, 2);
-}
-switch (track->par->color_trc) {
-case AVCOL_TRC_BT709:avio_wb16(pb, 1); break;
-case AVCOL_TRC_SMPTE170M:avio_wb16(pb, 1); break; // remapped
-case AVCOL_TRC_SMPTE240M:avio_wb16(pb, 7); break;
-case AVCOL_TRC_SMPTEST2084:  avio_wb16(pb, 16); break;
-case AVCOL_TRC_SMPTE428: avio_wb16(pb, 17); break;
-case AVCOL_TRC_ARIB_STD_B67: avio_wb16(pb, 18); break;
-default: avio_wb16(pb, 2);
-}
-switch (track->par->color_space) {
-case AVCOL_SPC_BT709:  avio_wb16(pb, 1); break;
-case AVCOL_SPC_BT470BG:
-case AVCOL_SPC_SMPTE170M:  avio_wb16(pb, 6); break;
-case AVCOL_SPC_SMPTE240M:  avio_wb16(pb, 7); break;
-case AVCOL_SPC_BT2020_NCL: avio_wb16(pb, 9); break;
-default:   avio_wb16(pb, 2);
-}
-
+avio_wb16(pb, track->par->color_primaries);
+avio_wb16(pb, track->par->color_trc);
+avio_wb16(pb, track->par->color_space);
 if (track->mode == MODE_MP4) {
 int full_range = track->par->color_range == AVCOL_RANGE_JPEG;
 avio_w8(pb, full_range << 7);

___
ffmpeg-cvslog mailing list
ffmpeg-cvslog@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog

To unsubscribe, visit link above, or email
ffmpeg-cvslog-requ...@ffmpeg.org with subject "unsubscribe".

[FFmpeg-cvslog] avformat/movenc: stop guessing colr atom values

2020-04-13 Thread Michael Bradshaw
ffmpeg | branch: master | Michael Bradshaw  | Mon Mar 30 
12:23:38 2020 -0600| [9842fd3aaf18cd8bda82e03f099a6cea7234bbcf] | committer: 
Michael Bradshaw

avformat/movenc: stop guessing colr atom values

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=9842fd3aaf18cd8bda82e03f099a6cea7234bbcf
---

 libavformat/movenc.c | 33 +++--
 1 file changed, 3 insertions(+), 30 deletions(-)

diff --git a/libavformat/movenc.c b/libavformat/movenc.c
index 3042e3ccd2..af5f12a415 100644
--- a/libavformat/movenc.c
+++ b/libavformat/movenc.c
@@ -1893,36 +1893,6 @@ static int mov_write_colr_tag(AVIOContext *pb, MOVTrack 
*track, int prefer_icc)
 }
 }
 
-if (track->par->color_primaries == AVCOL_PRI_UNSPECIFIED &&
-track->par->color_trc == AVCOL_TRC_UNSPECIFIED &&
-track->par->color_space == AVCOL_SPC_UNSPECIFIED) {
-if ((track->par->width >= 1920 && track->par->height >= 1080)
-  || (track->par->width == 1280 && track->par->height == 720)) {
-av_log(NULL, AV_LOG_WARNING, "color primaries unspecified, 
assuming bt709\n");
-track->par->color_primaries = AVCOL_PRI_BT709;
-} else if (track->par->width == 720 && track->height == 576) {
-av_log(NULL, AV_LOG_WARNING, "color primaries unspecified, 
assuming bt470bg\n");
-track->par->color_primaries = AVCOL_PRI_BT470BG;
-} else if (track->par->width == 720 &&
-   (track->height == 486 || track->height == 480)) {
-av_log(NULL, AV_LOG_WARNING, "color primaries unspecified, 
assuming smpte170\n");
-track->par->color_primaries = AVCOL_PRI_SMPTE170M;
-} else {
-av_log(NULL, AV_LOG_WARNING, "color primaries unspecified, unable 
to assume anything\n");
-}
-switch (track->par->color_primaries) {
-case AVCOL_PRI_BT709:
-track->par->color_trc = AVCOL_TRC_BT709;
-track->par->color_space = AVCOL_SPC_BT709;
-break;
-case AVCOL_PRI_SMPTE170M:
-case AVCOL_PRI_BT470BG:
-track->par->color_trc = AVCOL_TRC_BT709;
-track->par->color_space = AVCOL_SPC_SMPTE170M;
-break;
-}
-}
-
 /* We should only ever be called by MOV or MP4. */
 av_assert0(track->mode == MODE_MOV || track->mode == MODE_MP4);
 
@@ -1932,6 +1902,9 @@ static int mov_write_colr_tag(AVIOContext *pb, MOVTrack 
*track, int prefer_icc)
 ffio_wfourcc(pb, "nclx");
 else
 ffio_wfourcc(pb, "nclc");
+// Do not try to guess the color info if it is AVCOL_PRI_UNSPECIFIED.
+// e.g., Dolby Vision for Apple devices should be set to 
AVCOL_PRI_UNSPECIFIED. See
+// 
https://developer.apple.com/av-foundation/High-Dynamic-Range-Metadata-for-Apple-Devices.pdf
 avio_wb16(pb, track->par->color_primaries);
 avio_wb16(pb, track->par->color_trc);
 avio_wb16(pb, track->par->color_space);

___
ffmpeg-cvslog mailing list
ffmpeg-cvslog@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog

To unsubscribe, visit link above, or email
ffmpeg-cvslog-requ...@ffmpeg.org with subject "unsubscribe".

[FFmpeg-cvslog] avformat/movenc: remove the write_clli mov flag

2020-04-13 Thread Michael Bradshaw
ffmpeg | branch: master | Michael Bradshaw  | Mon Apr 13 
10:08:43 2020 -0600| [3ebf449766d4b69a7774c4990fb24fe71c848a3e] | committer: 
Michael Bradshaw

avformat/movenc: remove the write_clli mov flag

The clli atom is expected to be standardized soon. See
http://ffmpeg.org/pipermail/ffmpeg-devel/2020-April/259529.html

We now write the clli atom by default.

Signed-off-by: Michael Bradshaw 

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=3ebf449766d4b69a7774c4990fb24fe71c848a3e
---

 libavformat/movenc.c | 11 +++
 libavformat/movenc.h |  1 -
 2 files changed, 3 insertions(+), 9 deletions(-)

diff --git a/libavformat/movenc.c b/libavformat/movenc.c
index af5f12a415..af7bdc01ed 100644
--- a/libavformat/movenc.c
+++ b/libavformat/movenc.c
@@ -77,7 +77,6 @@ static const AVOption options[] = {
 { "delay_moov", "Delay writing the initial moov until the first fragment 
is cut, or until the first fragment flush", 0, AV_OPT_TYPE_CONST, {.i64 = 
FF_MOV_FLAG_DELAY_MOOV}, INT_MIN, INT_MAX, AV_OPT_FLAG_ENCODING_PARAM, 
"movflags" },
 { "global_sidx", "Write a global sidx index at the start of the file", 0, 
AV_OPT_TYPE_CONST, {.i64 = FF_MOV_FLAG_GLOBAL_SIDX}, INT_MIN, INT_MAX, 
AV_OPT_FLAG_ENCODING_PARAM, "movflags" },
 { "skip_sidx", "Skip writing of sidx atom", 0, AV_OPT_TYPE_CONST, {.i64 = 
FF_MOV_FLAG_SKIP_SIDX}, INT_MIN, INT_MAX, AV_OPT_FLAG_ENCODING_PARAM, 
"movflags" },
-{ "write_clli", "Write clli atom (Experimental, may be renamed or changed, 
do not use from scripts)", 0, AV_OPT_TYPE_CONST, {.i64 = 
FF_MOV_FLAG_WRITE_CLLI}, INT_MIN, INT_MAX, AV_OPT_FLAG_ENCODING_PARAM, 
"movflags" },
 { "write_colr", "Write colr atom (Experimental, may be renamed or changed, 
do not use from scripts)", 0, AV_OPT_TYPE_CONST, {.i64 = 
FF_MOV_FLAG_WRITE_COLR}, INT_MIN, INT_MAX, AV_OPT_FLAG_ENCODING_PARAM, 
"movflags" },
 { "prefer_icc", "If writing colr atom prioritise usage of ICC profile if 
it exists in stream packet side data", 0, AV_OPT_TYPE_CONST, {.i64 = 
FF_MOV_FLAG_PREFER_ICC}, INT_MIN, INT_MAX, AV_OPT_FLAG_ENCODING_PARAM, 
"movflags" },
 { "write_gama", "Write deprecated gama atom", 0, AV_OPT_TYPE_CONST, {.i64 
= FF_MOV_FLAG_WRITE_GAMA}, INT_MIN, INT_MAX, AV_OPT_FLAG_ENCODING_PARAM, 
"movflags" },
@@ -1923,7 +1922,7 @@ static int mov_write_clli_tag(AVIOContext *pb, MOVTrack 
*track)
 
 side_data = av_stream_get_side_data(track->st, 
AV_PKT_DATA_CONTENT_LIGHT_LEVEL, NULL);
 if (!side_data) {
-av_log(NULL, AV_LOG_WARNING, "Not writing 'clli' atom. No content 
light level info.\n");
+av_log(NULL, AV_LOG_VERBOSE, "Not writing 'clli' atom. No content 
light level info.\n");
 return 0;
 }
 content_light_metadata = (const AVContentLightMetadata*)side_data;
@@ -2108,12 +2107,8 @@ static int mov_write_video_tag(AVFormatContext *s, 
AVIOContext *pb, MOVMuxContex
 else
 av_log(mov->fc, AV_LOG_WARNING, "Not writing 'colr' atom. Format 
is not MOV or MP4.\n");
 }
-if (mov->flags & FF_MOV_FLAG_WRITE_CLLI) {
-if (track->mode == MODE_MOV || track->mode == MODE_MP4)
-mov_write_clli_tag(pb, track);
-else
-av_log(mov->fc, AV_LOG_WARNING, "Not writing 'clli' atom. Format 
is not MOV or MP4.\n");
-}
+if (track->mode == MODE_MOV || track->mode == MODE_MP4)
+mov_write_clli_tag(pb, track);
 
 if (track->mode == MODE_MP4 && mov->fc->strict_std_compliance <= 
FF_COMPLIANCE_UNOFFICIAL) {
 AVStereo3D* stereo_3d = (AVStereo3D*) 
av_stream_get_side_data(track->st, AV_PKT_DATA_STEREO3D, NULL);
diff --git a/libavformat/movenc.h b/libavformat/movenc.h
index a7a0841f55..997b2d61c0 100644
--- a/libavformat/movenc.h
+++ b/libavformat/movenc.h
@@ -261,7 +261,6 @@ typedef struct MOVMuxContext {
 #define FF_MOV_FLAG_SKIP_SIDX (1 << 21)
 #define FF_MOV_FLAG_CMAF  (1 << 22)
 #define FF_MOV_FLAG_PREFER_ICC(1 << 23)
-#define FF_MOV_FLAG_WRITE_CLLI(1 << 24)
 
 int ff_mov_write_packet(AVFormatContext *s, AVPacket *pkt);
 

___
ffmpeg-cvslog mailing list
ffmpeg-cvslog@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog

To unsubscribe, visit link above, or email
ffmpeg-cvslog-requ...@ffmpeg.org with subject "unsubscribe".

[FFmpeg-cvslog] avformat/movenc: write the mdcv atom by default

2020-04-13 Thread Michael Bradshaw
ffmpeg | branch: master | Michael Bradshaw  | Fri Mar 27 
17:19:02 2020 -0600| [4ae8d13e6d1bc6bdacfedcecb7ba1aab5494b193] | committer: 
Michael Bradshaw

avformat/movenc: write the mdcv atom by default

The mdcv atom isn't in ISO/IEC 14496-12:2015 but it is expected to be
added soon. See:
http://ffmpeg.org/pipermail/ffmpeg-devel/2020-April/259529.html

The mdcv atom is already parsed in FFmpeg in mov.c.

Signed-off-by: Michael Bradshaw 

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=4ae8d13e6d1bc6bdacfedcecb7ba1aab5494b193
---

 libavformat/movenc.c | 38 +-
 1 file changed, 37 insertions(+), 1 deletion(-)

diff --git a/libavformat/movenc.c b/libavformat/movenc.c
index af7bdc01ed..bc8d08044e 100644
--- a/libavformat/movenc.c
+++ b/libavformat/movenc.c
@@ -1934,6 +1934,40 @@ static int mov_write_clli_tag(AVIOContext *pb, MOVTrack 
*track)
 return 12;
 }
 
+static inline int64_t rescale_mdcv(AVRational q, int b)
+{
+return av_rescale(q.num, b, q.den);
+}
+
+static int mov_write_mdcv_tag(AVIOContext *pb, MOVTrack *track)
+{
+const int chroma_den = 5;
+const int luma_den = 1;
+const uint8_t *side_data;
+const AVMasteringDisplayMetadata *metadata;
+
+side_data = av_stream_get_side_data(track->st, 
AV_PKT_DATA_MASTERING_DISPLAY_METADATA, NULL);
+metadata = (const AVMasteringDisplayMetadata*)side_data;
+if (!metadata || !metadata->has_primaries || !metadata->has_luminance) {
+av_log(NULL, AV_LOG_VERBOSE, "Not writing 'mdcv' atom. Missing 
mastering metadata.\n");
+return 0;
+}
+
+avio_wb32(pb, 32); // size
+ffio_wfourcc(pb, "mdcv");
+avio_wb16(pb, rescale_mdcv(metadata->display_primaries[1][0], chroma_den));
+avio_wb16(pb, rescale_mdcv(metadata->display_primaries[1][1], chroma_den));
+avio_wb16(pb, rescale_mdcv(metadata->display_primaries[2][0], chroma_den));
+avio_wb16(pb, rescale_mdcv(metadata->display_primaries[2][1], chroma_den));
+avio_wb16(pb, rescale_mdcv(metadata->display_primaries[0][0], chroma_den));
+avio_wb16(pb, rescale_mdcv(metadata->display_primaries[0][1], chroma_den));
+avio_wb16(pb, rescale_mdcv(metadata->white_point[0], chroma_den));
+avio_wb16(pb, rescale_mdcv(metadata->white_point[1], chroma_den));
+avio_wb32(pb, rescale_mdcv(metadata->max_luminance, luma_den));
+avio_wb32(pb, rescale_mdcv(metadata->min_luminance, luma_den));
+return 32;
+}
+
 static void find_compressor(char * compressor_name, int len, MOVTrack *track)
 {
 AVDictionaryEntry *encoder;
@@ -2107,8 +2141,10 @@ static int mov_write_video_tag(AVFormatContext *s, 
AVIOContext *pb, MOVMuxContex
 else
 av_log(mov->fc, AV_LOG_WARNING, "Not writing 'colr' atom. Format 
is not MOV or MP4.\n");
 }
-if (track->mode == MODE_MOV || track->mode == MODE_MP4)
+if (track->mode == MODE_MOV || track->mode == MODE_MP4) {
 mov_write_clli_tag(pb, track);
+mov_write_mdcv_tag(pb, track);
+}
 
 if (track->mode == MODE_MP4 && mov->fc->strict_std_compliance <= 
FF_COMPLIANCE_UNOFFICIAL) {
 AVStereo3D* stereo_3d = (AVStereo3D*) 
av_stream_get_side_data(track->st, AV_PKT_DATA_STEREO3D, NULL);

___
ffmpeg-cvslog mailing list
ffmpeg-cvslog@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog

To unsubscribe, visit link above, or email
ffmpeg-cvslog-requ...@ffmpeg.org with subject "unsubscribe".

[FFmpeg-cvslog] tests/ref/vsynth: fix fate colr changes

2020-04-13 Thread Michael Bradshaw
ffmpeg | branch: master | Michael Bradshaw  | Mon Apr 13 
12:59:06 2020 -0700| [19a16330f4db04246cac4c3f4d3287e1712f6e70] | committer: 
Michael Bradshaw

tests/ref/vsynth: fix fate colr changes

Commit 9842fd3aaf18cd8bda82e03f099a6cea7234bbcf stopped guessing colr
values.

Signed-off-by: Michael Bradshaw 

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=19a16330f4db04246cac4c3f4d3287e1712f6e70
---

 tests/ref/vsynth/vsynth1-dnxhd-1080i-colr | 2 +-
 tests/ref/vsynth/vsynth2-dnxhd-1080i-colr | 2 +-
 tests/ref/vsynth/vsynth3-dnxhd-1080i-colr | 2 +-
 3 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/tests/ref/vsynth/vsynth1-dnxhd-1080i-colr 
b/tests/ref/vsynth/vsynth1-dnxhd-1080i-colr
index 1965e3135f..35cd719b63 100644
--- a/tests/ref/vsynth/vsynth1-dnxhd-1080i-colr
+++ b/tests/ref/vsynth/vsynth1-dnxhd-1080i-colr
@@ -1,4 +1,4 @@
-2caca2edcb519c88543c38e129ded03b *tests/data/fate/vsynth1-dnxhd-1080i-colr.mov
+5571f4ff9e29d352a7e373a14a9ed2ed *tests/data/fate/vsynth1-dnxhd-1080i-colr.mov
 3031929 tests/data/fate/vsynth1-dnxhd-1080i-colr.mov
 6f2d5429ffc4529a76acfeb28b560542 
*tests/data/fate/vsynth1-dnxhd-1080i-colr.out.rawvideo
 stddev:5.65 PSNR: 33.09 MAXDIFF:   55 bytes:  7603200/   760320
diff --git a/tests/ref/vsynth/vsynth2-dnxhd-1080i-colr 
b/tests/ref/vsynth/vsynth2-dnxhd-1080i-colr
index aac70c2867..f5ac604716 100644
--- a/tests/ref/vsynth/vsynth2-dnxhd-1080i-colr
+++ b/tests/ref/vsynth/vsynth2-dnxhd-1080i-colr
@@ -1,4 +1,4 @@
-e7e5cd8d6d1596596ded1007f37c3193 *tests/data/fate/vsynth2-dnxhd-1080i-colr.mov
+eee674d012c850c1d2bb5e816b668cdf *tests/data/fate/vsynth2-dnxhd-1080i-colr.mov
 3031929 tests/data/fate/vsynth2-dnxhd-1080i-colr.mov
 ec40a8014b819d02951b2f06bee7b514 
*tests/data/fate/vsynth2-dnxhd-1080i-colr.out.rawvideo
 stddev:1.54 PSNR: 44.33 MAXDIFF:   33 bytes:  7603200/   760320
diff --git a/tests/ref/vsynth/vsynth3-dnxhd-1080i-colr 
b/tests/ref/vsynth/vsynth3-dnxhd-1080i-colr
index 093489e45f..08aa30d8c4 100644
--- a/tests/ref/vsynth/vsynth3-dnxhd-1080i-colr
+++ b/tests/ref/vsynth/vsynth3-dnxhd-1080i-colr
@@ -1,4 +1,4 @@
-f5a7d7f837a750784458c60fb7b4d091 *tests/data/fate/vsynth3-dnxhd-1080i-colr.mov
+92a2f67cf77abf3428fe2d4f53ba2027 *tests/data/fate/vsynth3-dnxhd-1080i-colr.mov
 3031929 tests/data/fate/vsynth3-dnxhd-1080i-colr.mov
 f907fd2d48bedbc5283fbfc3fb9f61a0 
*tests/data/fate/vsynth3-dnxhd-1080i-colr.out.rawvideo
 stddev:6.92 PSNR: 31.32 MAXDIFF:   50 bytes:86700/ 8670

___
ffmpeg-cvslog mailing list
ffmpeg-cvslog@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog

To unsubscribe, visit link above, or email
ffmpeg-cvslog-requ...@ffmpeg.org with subject "unsubscribe".

[FFmpeg-cvslog] tests/ref/vsynth: fix fate colr changes (again)

2020-04-13 Thread Michael Bradshaw
ffmpeg | branch: master | Michael Bradshaw  | Mon Apr 13 
13:34:49 2020 -0700| [05039c13346b7d7c16625fa1f5e3bfb3513a7e6a] | committer: 
Michael Bradshaw

tests/ref/vsynth: fix fate colr changes (again)

Signed-off-by: Michael Bradshaw 

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=05039c13346b7d7c16625fa1f5e3bfb3513a7e6a
---

 tests/ref/vsynth/vsynth_lena-dnxhd-1080i-colr | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/tests/ref/vsynth/vsynth_lena-dnxhd-1080i-colr 
b/tests/ref/vsynth/vsynth_lena-dnxhd-1080i-colr
index ae855cd461..c21babba0f 100644
--- a/tests/ref/vsynth/vsynth_lena-dnxhd-1080i-colr
+++ b/tests/ref/vsynth/vsynth_lena-dnxhd-1080i-colr
@@ -1,4 +1,4 @@
-3a681c0e174ccf85fe1504cdf8546788 
*tests/data/fate/vsynth_lena-dnxhd-1080i-colr.mov
+f80be8c3350ca8b22ae8aa8724b2ef20 
*tests/data/fate/vsynth_lena-dnxhd-1080i-colr.mov
 3031929 tests/data/fate/vsynth_lena-dnxhd-1080i-colr.mov
 ce4993a69ef55c8c4b18138716f17b6f 
*tests/data/fate/vsynth_lena-dnxhd-1080i-colr.out.rawvideo
 stddev:1.33 PSNR: 45.59 MAXDIFF:   22 bytes:  7603200/   760320

___
ffmpeg-cvslog mailing list
ffmpeg-cvslog@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog

To unsubscribe, visit link above, or email
ffmpeg-cvslog-requ...@ffmpeg.org with subject "unsubscribe".

[FFmpeg-cvslog] avformat/matroskaenc: Don't write elements with their default value

2020-04-13 Thread Andreas Rheinhardt
ffmpeg | branch: master | Andreas Rheinhardt  | 
Tue Apr 14 02:47:44 2020 +0200| [f0d712d0f95ba757943cc6d49a8caa2e1adfb6e7] | 
committer: Andreas Rheinhardt

avformat/matroskaenc: Don't write elements with their default value

This has happened when writing chapters: Both editions as well as
chapters are by default not hidden and given that we don't support
writing hidden chapters at all, we don't need to write said elements at
all. The same goes for ChapterFlagEnabled.

Signed-off-by: Andreas Rheinhardt 

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=f0d712d0f95ba757943cc6d49a8caa2e1adfb6e7
---

 libavformat/matroskaenc.c | 5 -
 1 file changed, 5 deletions(-)

diff --git a/libavformat/matroskaenc.c b/libavformat/matroskaenc.c
index d0a02c0f5d..d3256d8f5d 100644
--- a/libavformat/matroskaenc.c
+++ b/libavformat/matroskaenc.c
@@ -1400,7 +1400,6 @@ static int mkv_write_chapters(AVFormatContext *s)
 editionentry = start_ebml_master(dyn_cp, MATROSKA_ID_EDITIONENTRY, 0);
 if (mkv->mode != MODE_WEBM) {
 put_ebml_uint(dyn_cp, MATROSKA_ID_EDITIONFLAGDEFAULT, 1);
-put_ebml_uint(dyn_cp, MATROSKA_ID_EDITIONFLAGHIDDEN , 0);
 }
 for (i = 0; i < s->nb_chapters; i++) {
 ebml_master chapteratom, chapterdisplay;
@@ -1420,10 +1419,6 @@ static int mkv_write_chapters(AVFormatContext *s)
   (uint32_t)c->id + (uint64_t)mkv->chapter_id_offset);
 put_ebml_uint(dyn_cp, MATROSKA_ID_CHAPTERTIMESTART, chapterstart);
 put_ebml_uint(dyn_cp, MATROSKA_ID_CHAPTERTIMEEND, chapterend);
-if (mkv->mode != MODE_WEBM) {
-put_ebml_uint(dyn_cp, MATROSKA_ID_CHAPTERFLAGHIDDEN , 0);
-put_ebml_uint(dyn_cp, MATROSKA_ID_CHAPTERFLAGENABLED, 1);
-}
 if ((t = av_dict_get(c->metadata, "title", NULL, 0))) {
 chapterdisplay = start_ebml_master(dyn_cp, 
MATROSKA_ID_CHAPTERDISPLAY, 0);
 put_ebml_string(dyn_cp, MATROSKA_ID_CHAPSTRING, t->value);

___
ffmpeg-cvslog mailing list
ffmpeg-cvslog@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog

To unsubscribe, visit link above, or email
ffmpeg-cvslog-requ...@ffmpeg.org with subject "unsubscribe".

[FFmpeg-cvslog] fftools: fix hwaccels option dump redundancy

2020-04-13 Thread Jun Zhao
ffmpeg | branch: master | Jun Zhao  | Thu Apr  9 
21:54:01 2020 +0800| [5633f9a8a221f7511d5ec9b4c57a21c890271ad0] | committer: 
Jun Zhao

fftools: fix hwaccels option dump redundancy

When QSV is enabled in FFmpeg, the command "ffmpeg -hwaccels" shows a
duplicate entry in acceleration methods for QSV:

Hardware acceleration methods:
vaapi
qsv
drm
opencl
qsv

Reviewed-by: Mark Thompson 
Signed-off-by: Jun Zhao 

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=5633f9a8a221f7511d5ec9b4c57a21c890271ad0
---

 fftools/ffmpeg_opt.c | 5 -
 1 file changed, 5 deletions(-)

diff --git a/fftools/ffmpeg_opt.c b/fftools/ffmpeg_opt.c
index 95001a963f..93b3d96205 100644
--- a/fftools/ffmpeg_opt.c
+++ b/fftools/ffmpeg_opt.c
@@ -233,14 +233,11 @@ static void init_options(OptionsContext *o)
 static int show_hwaccels(void *optctx, const char *opt, const char *arg)
 {
 enum AVHWDeviceType type = AV_HWDEVICE_TYPE_NONE;
-int i;
 
 printf("Hardware acceleration methods:\n");
 while ((type = av_hwdevice_iterate_types(type)) !=
AV_HWDEVICE_TYPE_NONE)
 printf("%s\n", av_hwdevice_get_type_name(type));
-for (i = 0; hwaccels[i].name; i++)
-printf("%s\n", hwaccels[i].name);
 printf("\n");
 return 0;
 }
@@ -936,8 +933,6 @@ static void add_input_streams(OptionsContext *o, 
AVFormatContext *ic)
AV_HWDEVICE_TYPE_NONE)
 av_log(NULL, AV_LOG_FATAL, "%s ",
av_hwdevice_get_type_name(type));
-for (i = 0; hwaccels[i].name; i++)
-av_log(NULL, AV_LOG_FATAL, "%s ", 
hwaccels[i].name);
 av_log(NULL, AV_LOG_FATAL, "\n");
 exit_program(1);
 }

___
ffmpeg-cvslog mailing list
ffmpeg-cvslog@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog

To unsubscribe, visit link above, or email
ffmpeg-cvslog-requ...@ffmpeg.org with subject "unsubscribe".