[SCM] libav/experimental: Add service_provider and service_name metadata

siretart at users.alioth.debian.org siretart at users.alioth.debian.org
Sun Jun 30 17:22:16 UTC 2013


The following commit has been merged in the experimental branch:
commit 69688e71bc4c4318209e8d4e3861c47186caebda
Author: Georgi Chorbadzhiyski <gf at unixsol.org>
Date:   Thu Jan 20 09:26:40 2011 +0200

    Add service_provider and service_name metadata
    
    This patch adds support in mpegts muxer for using service_provider and
    service_name metadata to set service_provider_name and service_name
    fields in SDT.
    
    Example usage:
       ffmpeg -i file.ts -f mpegts -re -acodec copy -vcodec copy -f mpegts \
           -metadata service_provider="Some provider" \
           -metadata service_name="Some Channel" \
           "udp://239.0.70.2:5000?pkt_size=1316&ttl=1"
    
    Signed-off-by: Mans Rullgard <mans at mansr.com>

diff --git a/libavformat/avformat.h b/libavformat/avformat.h
index b484649..c72c58f 100644
--- a/libavformat/avformat.h
+++ b/libavformat/avformat.h
@@ -161,6 +161,8 @@ struct AVFormatContext;
  *                 E.g for "Also sprach Zarathustra", artist would be "Richard
  *                 Strauss" and performer "London Philharmonic Orchestra".
  * publisher    -- name of the label/publisher.
+ * service_name     -- name of the service in broadcasting (channel name).
+ * service_provider -- name of the service provider in broadcasting.
  * title        -- name of the work.
  * track        -- number of this work in the set, can be in form current/total.
  */
diff --git a/libavformat/mpegtsenc.c b/libavformat/mpegtsenc.c
index bfd21db..14bbd62 100644
--- a/libavformat/mpegtsenc.c
+++ b/libavformat/mpegtsenc.c
@@ -391,18 +391,22 @@ static int mpegts_write_header(AVFormatContext *s)
     MpegTSWriteStream *ts_st;
     MpegTSService *service;
     AVStream *st, *pcr_st = NULL;
-    AVMetadataTag *title;
+    AVMetadataTag *title, *provider;
     int i, j;
     const char *service_name;
+    const char *provider_name;
     int *pids;
 
     ts->tsid = DEFAULT_TSID;
     ts->onid = DEFAULT_ONID;
     /* allocate a single DVB service */
     title = av_metadata_get(s->metadata, "title", NULL, 0);
+    if (!title)
+        title = av_metadata_get(s->metadata, "service_name", NULL, 0);
     service_name = title ? title->value : DEFAULT_SERVICE_NAME;
-    service = mpegts_add_service(ts, DEFAULT_SID,
-                                 DEFAULT_PROVIDER_NAME, service_name);
+    provider = av_metadata_get(s->metadata, "service_provider", NULL, 0);
+    provider_name = provider ? provider->value : DEFAULT_PROVIDER_NAME;
+    service = mpegts_add_service(ts, DEFAULT_SID, provider_name, service_name);
     service->pmt.write_packet = section_write_packet;
     service->pmt.opaque = s;
     service->pmt.cc = 15;

-- 
Libav/FFmpeg packaging



More information about the pkg-multimedia-commits mailing list