diff --git a/libavformat/avformat.h b/libavformat/avformat.h index b484649693..c72c58f0fe 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 bfd21db139..14bbd62ab4 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;