From 74658a8b4db3a0b99e1461283d358f800e93f73a Mon Sep 17 00:00:00 2001
From: "Vittorio Gambaletta (VittGam)" <ffmpeg-dev@vittgam.net>
Date: Tue, 26 Jan 2016 15:13:09 +0100
Subject: [PATCH] ffmpeg_opt: Allow -metadata option to set metadata on
 programs.

Signed-off-by: Vittorio Gambaletta <ffmpeg-dev@vittgam.net>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
---
 doc/ffmpeg.texi | 4 ++--
 ffmpeg_opt.c    | 7 +++++++
 2 files changed, 9 insertions(+), 2 deletions(-)

diff --git a/doc/ffmpeg.texi b/doc/ffmpeg.texi
index a38a32e17d5..7d3266af8e9 100644
--- a/doc/ffmpeg.texi
+++ b/doc/ffmpeg.texi
@@ -339,8 +339,8 @@ see @ref{date syntax,,the Date section in the ffmpeg-utils(1) manual,ffmpeg-util
 Set a metadata key/value pair.
 
 An optional @var{metadata_specifier} may be given to set metadata
-on streams or chapters. See @code{-map_metadata} documentation for
-details.
+on streams, chapters or programs. See @code{-map_metadata}
+documentation for details.
 
 This option overrides metadata set with @code{-map_metadata}. It is
 also possible to delete metadata by using an empty value.
diff --git a/ffmpeg_opt.c b/ffmpeg_opt.c
index e03ad891d0a..669976bcb05 100644
--- a/ffmpeg_opt.c
+++ b/ffmpeg_opt.c
@@ -2466,6 +2466,13 @@ loop_end:
                 }
                 m = &oc->chapters[index]->metadata;
                 break;
+            case 'p':
+                if (index < 0 || index >= oc->nb_programs) {
+                    av_log(NULL, AV_LOG_FATAL, "Invalid program index %d in metadata specifier.\n", index);
+                    exit_program(1);
+                }
+                m = &oc->programs[index]->metadata;
+                break;
             default:
                 av_log(NULL, AV_LOG_FATAL, "Invalid metadata specifier %s.\n", o->metadata[i].specifier);
                 exit_program(1);
-- 
GitLab