Re: [FFmpeg-devel] [PATCH] lavf/mpegtsenc: write metadata descriptor for timed ID3 packets

2016-11-06 Thread Stefano Sabatini
On date Sunday 2016-08-21 18:23:21 +0200, Michael Niedermayer encoded:
> On Sun, Aug 21, 2016 at 10:44:27AM +0200, Stefano Sabatini wrote:
> > On date Saturday 2016-08-20 18:57:52 +0200, Michael Niedermayer encoded:
> > > On Sat, Aug 20, 2016 at 03:48:35PM +0200, Stefano Sabatini wrote:
> > > > On date Thursday 2016-05-19 18:45:35 +0200, Stefano Sabatini encoded:
> > > > > This is required since some softwares are not able to correctly 
> > > > > recognize
> > > > > the metadata.
> > > > > ---
> > > > >  libavformat/mpegtsenc.c | 24 ++--
> > > > >  1 file changed, 14 insertions(+), 10 deletions(-)
> > > > 
> > > > Updated, with some more documentation and references to the MPEGTS
> > > > standard.
> > > > 
> > > > Note: this patch was created comparing the output of FFmpeg with those
> > > > from encoding.com and elemental. With the change the output metadata
> > > > can be read by third-party players.
> > > > 
> > > > If the maintainers prefer, I can enable this output mode through a
> > > > flag.
> > > > -- 
> > > > FFmpeg = Fiendish & Fiendish Mastering Purposeless Egregious Goblin
> > > 
> > > >  mpegtsenc.c |   24 ++--
> > > >  1 file changed, 14 insertions(+), 10 deletions(-)
> > > > 3a6655bca70653c64bfb5f2073d01feee73e64c2  
> > > > 0003-lavf-mpegtsenc-write-metadata-descriptor-for-timed-I.patch
> > > > From 20f22c426a9f5c59d28f66a17b59d62301503d67 Mon Sep 17 00:00:00 2001
> > > > From: Stefano Sabatini 
> > > > Date: Tue, 12 Apr 2016 18:16:21 +0200
> > > > Subject: [PATCH] lavf/mpegtsenc: write metadata descriptor for timed ID3
> > > >  packets
> > > > 
> > > > This is required since some programs are not able to correctly recognize
> > > > the metadata. See H.222, 2.6.58 Metadata pointer descriptor.
> > > > 
> > > > putstr8() is modified in order to allow to skip writing the string
> > > > length.
> > > > ---
> > > >  libavformat/mpegtsenc.c | 24 ++--
> > > >  1 file changed, 14 insertions(+), 10 deletions(-)
> > > > 
> > > > diff --git a/libavformat/mpegtsenc.c b/libavformat/mpegtsenc.c
> > > > index b437100..6f40615 100644
> > > > --- a/libavformat/mpegtsenc.c
> > > > +++ b/libavformat/mpegtsenc.c
> > > > @@ -256,7 +256,7 @@ static void mpegts_write_pat(AVFormatContext *s)
> > > >  }
> > > >  
> > > >  /* NOTE: !str is accepted for an empty string */
> > > > -static void putstr8(uint8_t **q_ptr, const char *str)
> > > > +static void putstr8(uint8_t **q_ptr, const char *str, int write_len)
> > > 
> > > breaks build, putstr8() seems after the place where a use is added
> > > in git master, or i did somehing silly
> > 
> > Another patch is needed (already approved, but doesn't make sense
> > without this other patch), in attachment.
> 
> patches probably ok

Applied, thanks.
-- 
FFmpeg = Fundamentalist Frenzy Mythic Powerful Elfic Geisha
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


Re: [FFmpeg-devel] [PATCH] lavf/mpegtsenc: write metadata descriptor for timed ID3 packets

2016-11-05 Thread Michael Niedermayer
On Sun, Aug 21, 2016 at 06:23:21PM +0200, Michael Niedermayer wrote:
> On Sun, Aug 21, 2016 at 10:44:27AM +0200, Stefano Sabatini wrote:
> > On date Saturday 2016-08-20 18:57:52 +0200, Michael Niedermayer encoded:
> > > On Sat, Aug 20, 2016 at 03:48:35PM +0200, Stefano Sabatini wrote:
> > > > On date Thursday 2016-05-19 18:45:35 +0200, Stefano Sabatini encoded:
> > > > > This is required since some softwares are not able to correctly 
> > > > > recognize
> > > > > the metadata.
> > > > > ---
> > > > >  libavformat/mpegtsenc.c | 24 ++--
> > > > >  1 file changed, 14 insertions(+), 10 deletions(-)
> > > > 
> > > > Updated, with some more documentation and references to the MPEGTS
> > > > standard.
> > > > 
> > > > Note: this patch was created comparing the output of FFmpeg with those
> > > > from encoding.com and elemental. With the change the output metadata
> > > > can be read by third-party players.
> > > > 
> > > > If the maintainers prefer, I can enable this output mode through a
> > > > flag.
> > > > -- 
> > > > FFmpeg = Fiendish & Fiendish Mastering Purposeless Egregious Goblin
> > > 
> > > >  mpegtsenc.c |   24 ++--
> > > >  1 file changed, 14 insertions(+), 10 deletions(-)
> > > > 3a6655bca70653c64bfb5f2073d01feee73e64c2  
> > > > 0003-lavf-mpegtsenc-write-metadata-descriptor-for-timed-I.patch
> > > > From 20f22c426a9f5c59d28f66a17b59d62301503d67 Mon Sep 17 00:00:00 2001
> > > > From: Stefano Sabatini 
> > > > Date: Tue, 12 Apr 2016 18:16:21 +0200
> > > > Subject: [PATCH] lavf/mpegtsenc: write metadata descriptor for timed ID3
> > > >  packets
> > > > 
> > > > This is required since some programs are not able to correctly recognize
> > > > the metadata. See H.222, 2.6.58 Metadata pointer descriptor.
> > > > 
> > > > putstr8() is modified in order to allow to skip writing the string
> > > > length.
> > > > ---
> > > >  libavformat/mpegtsenc.c | 24 ++--
> > > >  1 file changed, 14 insertions(+), 10 deletions(-)
> > > > 
> > > > diff --git a/libavformat/mpegtsenc.c b/libavformat/mpegtsenc.c
> > > > index b437100..6f40615 100644
> > > > --- a/libavformat/mpegtsenc.c
> > > > +++ b/libavformat/mpegtsenc.c
> > > > @@ -256,7 +256,7 @@ static void mpegts_write_pat(AVFormatContext *s)
> > > >  }
> > > >  
> > > >  /* NOTE: !str is accepted for an empty string */
> > > > -static void putstr8(uint8_t **q_ptr, const char *str)
> > > > +static void putstr8(uint8_t **q_ptr, const char *str, int write_len)
> > > 
> > > breaks build, putstr8() seems after the place where a use is added
> > > in git master, or i did somehing silly
> > 
> > Another patch is needed (already approved, but doesn't make sense
> > without this other patch), in attachment.
> 
> patches probably ok

ping

[...]

-- 
Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

No great genius has ever existed without some touch of madness. -- Aristotle


signature.asc
Description: Digital signature
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


Re: [FFmpeg-devel] [PATCH] lavf/mpegtsenc: write metadata descriptor for timed ID3 packets

2016-08-21 Thread Michael Niedermayer
On Sun, Aug 21, 2016 at 10:44:27AM +0200, Stefano Sabatini wrote:
> On date Saturday 2016-08-20 18:57:52 +0200, Michael Niedermayer encoded:
> > On Sat, Aug 20, 2016 at 03:48:35PM +0200, Stefano Sabatini wrote:
> > > On date Thursday 2016-05-19 18:45:35 +0200, Stefano Sabatini encoded:
> > > > This is required since some softwares are not able to correctly 
> > > > recognize
> > > > the metadata.
> > > > ---
> > > >  libavformat/mpegtsenc.c | 24 ++--
> > > >  1 file changed, 14 insertions(+), 10 deletions(-)
> > > 
> > > Updated, with some more documentation and references to the MPEGTS
> > > standard.
> > > 
> > > Note: this patch was created comparing the output of FFmpeg with those
> > > from encoding.com and elemental. With the change the output metadata
> > > can be read by third-party players.
> > > 
> > > If the maintainers prefer, I can enable this output mode through a
> > > flag.
> > > -- 
> > > FFmpeg = Fiendish & Fiendish Mastering Purposeless Egregious Goblin
> > 
> > >  mpegtsenc.c |   24 ++--
> > >  1 file changed, 14 insertions(+), 10 deletions(-)
> > > 3a6655bca70653c64bfb5f2073d01feee73e64c2  
> > > 0003-lavf-mpegtsenc-write-metadata-descriptor-for-timed-I.patch
> > > From 20f22c426a9f5c59d28f66a17b59d62301503d67 Mon Sep 17 00:00:00 2001
> > > From: Stefano Sabatini 
> > > Date: Tue, 12 Apr 2016 18:16:21 +0200
> > > Subject: [PATCH] lavf/mpegtsenc: write metadata descriptor for timed ID3
> > >  packets
> > > 
> > > This is required since some programs are not able to correctly recognize
> > > the metadata. See H.222, 2.6.58 Metadata pointer descriptor.
> > > 
> > > putstr8() is modified in order to allow to skip writing the string
> > > length.
> > > ---
> > >  libavformat/mpegtsenc.c | 24 ++--
> > >  1 file changed, 14 insertions(+), 10 deletions(-)
> > > 
> > > diff --git a/libavformat/mpegtsenc.c b/libavformat/mpegtsenc.c
> > > index b437100..6f40615 100644
> > > --- a/libavformat/mpegtsenc.c
> > > +++ b/libavformat/mpegtsenc.c
> > > @@ -256,7 +256,7 @@ static void mpegts_write_pat(AVFormatContext *s)
> > >  }
> > >  
> > >  /* NOTE: !str is accepted for an empty string */
> > > -static void putstr8(uint8_t **q_ptr, const char *str)
> > > +static void putstr8(uint8_t **q_ptr, const char *str, int write_len)
> > 
> > breaks build, putstr8() seems after the place where a use is added
> > in git master, or i did somehing silly
> 
> Another patch is needed (already approved, but doesn't make sense
> without this other patch), in attachment.

patches probably ok

thx

[...]

-- 
Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

Many that live deserve death. And some that die deserve life. Can you give
it to them? Then do not be too eager to deal out death in judgement. For
even the very wise cannot see all ends. -- Gandalf


signature.asc
Description: Digital signature
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


Re: [FFmpeg-devel] [PATCH] lavf/mpegtsenc: write metadata descriptor for timed ID3 packets

2016-08-21 Thread Stefano Sabatini
On date Saturday 2016-08-20 18:57:52 +0200, Michael Niedermayer encoded:
> On Sat, Aug 20, 2016 at 03:48:35PM +0200, Stefano Sabatini wrote:
> > On date Thursday 2016-05-19 18:45:35 +0200, Stefano Sabatini encoded:
> > > This is required since some softwares are not able to correctly recognize
> > > the metadata.
> > > ---
> > >  libavformat/mpegtsenc.c | 24 ++--
> > >  1 file changed, 14 insertions(+), 10 deletions(-)
> > 
> > Updated, with some more documentation and references to the MPEGTS
> > standard.
> > 
> > Note: this patch was created comparing the output of FFmpeg with those
> > from encoding.com and elemental. With the change the output metadata
> > can be read by third-party players.
> > 
> > If the maintainers prefer, I can enable this output mode through a
> > flag.
> > -- 
> > FFmpeg = Fiendish & Fiendish Mastering Purposeless Egregious Goblin
> 
> >  mpegtsenc.c |   24 ++--
> >  1 file changed, 14 insertions(+), 10 deletions(-)
> > 3a6655bca70653c64bfb5f2073d01feee73e64c2  
> > 0003-lavf-mpegtsenc-write-metadata-descriptor-for-timed-I.patch
> > From 20f22c426a9f5c59d28f66a17b59d62301503d67 Mon Sep 17 00:00:00 2001
> > From: Stefano Sabatini 
> > Date: Tue, 12 Apr 2016 18:16:21 +0200
> > Subject: [PATCH] lavf/mpegtsenc: write metadata descriptor for timed ID3
> >  packets
> > 
> > This is required since some programs are not able to correctly recognize
> > the metadata. See H.222, 2.6.58 Metadata pointer descriptor.
> > 
> > putstr8() is modified in order to allow to skip writing the string
> > length.
> > ---
> >  libavformat/mpegtsenc.c | 24 ++--
> >  1 file changed, 14 insertions(+), 10 deletions(-)
> > 
> > diff --git a/libavformat/mpegtsenc.c b/libavformat/mpegtsenc.c
> > index b437100..6f40615 100644
> > --- a/libavformat/mpegtsenc.c
> > +++ b/libavformat/mpegtsenc.c
> > @@ -256,7 +256,7 @@ static void mpegts_write_pat(AVFormatContext *s)
> >  }
> >  
> >  /* NOTE: !str is accepted for an empty string */
> > -static void putstr8(uint8_t **q_ptr, const char *str)
> > +static void putstr8(uint8_t **q_ptr, const char *str, int write_len)
> 
> breaks build, putstr8() seems after the place where a use is added
> in git master, or i did somehing silly

Another patch is needed (already approved, but doesn't make sense
without this other patch), in attachment.
-- 
FFmpeg = Funny and Fancy Mournful Puristic Evil Glue
>From 6948454eb19676639a3b403c48774af2a133ed29 Mon Sep 17 00:00:00 2001
From: Stefano Sabatini 
Date: Tue, 12 Apr 2016 18:14:45 +0200
Subject: [PATCH] lavf/mpegtsenc: move putstr8 definition up

This allows to use the function in a future commit.
---
 libavformat/mpegtsenc.c | 34 +-
 1 file changed, 17 insertions(+), 17 deletions(-)

diff --git a/libavformat/mpegtsenc.c b/libavformat/mpegtsenc.c
index fd849e5..b437100 100644
--- a/libavformat/mpegtsenc.c
+++ b/libavformat/mpegtsenc.c
@@ -255,6 +255,23 @@ static void mpegts_write_pat(AVFormatContext *s)
   data, q - data);
 }
 
+/* NOTE: !str is accepted for an empty string */
+static void putstr8(uint8_t **q_ptr, const char *str)
+{
+uint8_t *q;
+int len;
+
+q = *q_ptr;
+if (!str)
+len = 0;
+else
+len = strlen(str);
+*q++ = len;
+memcpy(q, str, len);
+q += len;
+*q_ptr = q;
+}
+
 static int mpegts_write_pmt(AVFormatContext *s, MpegTSService *service)
 {
 MpegTSWrite *ts = s->priv_data;
@@ -637,23 +654,6 @@ static int mpegts_write_pmt(AVFormatContext *s, MpegTSService *service)
 return 0;
 }
 
-/* NOTE: !str is accepted for an empty string */
-static void putstr8(uint8_t **q_ptr, const char *str)
-{
-uint8_t *q;
-int len;
-
-q = *q_ptr;
-if (!str)
-len = 0;
-else
-len = strlen(str);
-*q++ = len;
-memcpy(q, str, len);
-q += len;
-*q_ptr = q;
-}
-
 static void mpegts_write_sdt(AVFormatContext *s)
 {
 MpegTSWrite *ts = s->priv_data;
-- 
1.9.1

>From 20f22c426a9f5c59d28f66a17b59d62301503d67 Mon Sep 17 00:00:00 2001
From: Stefano Sabatini 
Date: Tue, 12 Apr 2016 18:16:21 +0200
Subject: [PATCH] lavf/mpegtsenc: write metadata descriptor for timed ID3
 packets

This is required since some programs are not able to correctly recognize
the metadata. See H.222, 2.6.58 Metadata pointer descriptor.

putstr8() is modified in order to allow to skip writing the string
length.
---
 libavformat/mpegtsenc.c | 24 ++--
 1 file changed, 14 insertions(+), 10 deletions(-)

diff --git a/libavformat/mpegtsenc.c b/libavformat/mpegtsenc.c
index b437100..6f40615 100644
--- a/libavformat/mpegtsenc.c
+++ b/libavformat/mpegtsenc.c
@@ -256,7 +256,7 @@ static void mpegts_write_pat(AVFormatContext *s)
 }
 
 /* NOTE: !str is accepted for an empty string */
-static void putstr8(uint8_t **q_ptr, const char *str)
+static void putstr8(uint8_t **q_ptr, const 

Re: [FFmpeg-devel] [PATCH] lavf/mpegtsenc: write metadata descriptor for timed ID3 packets

2016-08-20 Thread Michael Niedermayer
On Sat, Aug 20, 2016 at 03:48:35PM +0200, Stefano Sabatini wrote:
> On date Thursday 2016-05-19 18:45:35 +0200, Stefano Sabatini encoded:
> > This is required since some softwares are not able to correctly recognize
> > the metadata.
> > ---
> >  libavformat/mpegtsenc.c | 24 ++--
> >  1 file changed, 14 insertions(+), 10 deletions(-)
> 
> Updated, with some more documentation and references to the MPEGTS
> standard.
> 
> Note: this patch was created comparing the output of FFmpeg with those
> from encoding.com and elemental. With the change the output metadata
> can be read by third-party players.
> 
> If the maintainers prefer, I can enable this output mode through a
> flag.
> -- 
> FFmpeg = Fiendish & Fiendish Mastering Purposeless Egregious Goblin

>  mpegtsenc.c |   24 ++--
>  1 file changed, 14 insertions(+), 10 deletions(-)
> 3a6655bca70653c64bfb5f2073d01feee73e64c2  
> 0003-lavf-mpegtsenc-write-metadata-descriptor-for-timed-I.patch
> From 20f22c426a9f5c59d28f66a17b59d62301503d67 Mon Sep 17 00:00:00 2001
> From: Stefano Sabatini 
> Date: Tue, 12 Apr 2016 18:16:21 +0200
> Subject: [PATCH] lavf/mpegtsenc: write metadata descriptor for timed ID3
>  packets
> 
> This is required since some programs are not able to correctly recognize
> the metadata. See H.222, 2.6.58 Metadata pointer descriptor.
> 
> putstr8() is modified in order to allow to skip writing the string
> length.
> ---
>  libavformat/mpegtsenc.c | 24 ++--
>  1 file changed, 14 insertions(+), 10 deletions(-)
> 
> diff --git a/libavformat/mpegtsenc.c b/libavformat/mpegtsenc.c
> index b437100..6f40615 100644
> --- a/libavformat/mpegtsenc.c
> +++ b/libavformat/mpegtsenc.c
> @@ -256,7 +256,7 @@ static void mpegts_write_pat(AVFormatContext *s)
>  }
>  
>  /* NOTE: !str is accepted for an empty string */
> -static void putstr8(uint8_t **q_ptr, const char *str)
> +static void putstr8(uint8_t **q_ptr, const char *str, int write_len)

breaks build, putstr8() seems after the place where a use is added
in git master, or i did somehing silly

libavformat/mpegtsenc.c: In function ‘mpegts_write_pmt’:
libavformat/mpegtsenc.c:618:17: error: implicit declaration of function 
‘putstr8’ [-Werror=implicit-function-declaration]
libavformat/mpegtsenc.c: At top level:
libavformat/mpegtsenc.c:644:13: warning: conflicting types for ‘putstr8’ 
[enabled by default]
libavformat/mpegtsenc.c:644:13: error: static declaration of ‘putstr8’ follows 
non-static declaration
libavformat/mpegtsenc.c:618:17: note: previous implicit declaration of 
‘putstr8’ was here
cc1: some warnings being treated as errors
make: *** [libavformat/mpegtsenc.o] Error 1

[...]


-- 
Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

Dictatorship: All citizens are under surveillance, all their steps and
actions recorded, for the politicians to enforce control.
Democracy: All politicians are under surveillance, all their steps and
actions recorded, for the citizens to enforce control.


signature.asc
Description: Digital signature
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


Re: [FFmpeg-devel] [PATCH] lavf/mpegtsenc: write metadata descriptor for timed ID3 packets

2016-08-20 Thread Stefano Sabatini
On date Thursday 2016-05-19 18:45:35 +0200, Stefano Sabatini encoded:
> This is required since some softwares are not able to correctly recognize
> the metadata.
> ---
>  libavformat/mpegtsenc.c | 24 ++--
>  1 file changed, 14 insertions(+), 10 deletions(-)

Updated, with some more documentation and references to the MPEGTS
standard.

Note: this patch was created comparing the output of FFmpeg with those
from encoding.com and elemental. With the change the output metadata
can be read by third-party players.

If the maintainers prefer, I can enable this output mode through a
flag.
-- 
FFmpeg = Fiendish & Fiendish Mastering Purposeless Egregious Goblin
>From 20f22c426a9f5c59d28f66a17b59d62301503d67 Mon Sep 17 00:00:00 2001
From: Stefano Sabatini 
Date: Tue, 12 Apr 2016 18:16:21 +0200
Subject: [PATCH] lavf/mpegtsenc: write metadata descriptor for timed ID3
 packets

This is required since some programs are not able to correctly recognize
the metadata. See H.222, 2.6.58 Metadata pointer descriptor.

putstr8() is modified in order to allow to skip writing the string
length.
---
 libavformat/mpegtsenc.c | 24 ++--
 1 file changed, 14 insertions(+), 10 deletions(-)

diff --git a/libavformat/mpegtsenc.c b/libavformat/mpegtsenc.c
index b437100..6f40615 100644
--- a/libavformat/mpegtsenc.c
+++ b/libavformat/mpegtsenc.c
@@ -256,7 +256,7 @@ static void mpegts_write_pat(AVFormatContext *s)
 }
 
 /* NOTE: !str is accepted for an empty string */
-static void putstr8(uint8_t **q_ptr, const char *str)
+static void putstr8(uint8_t **q_ptr, const char *str, int write_len)
 {
 uint8_t *q;
 int len;
@@ -266,7 +266,8 @@ static void putstr8(uint8_t **q_ptr, const char *str)
 len = 0;
 else
 len = strlen(str);
-*q++ = len;
+if (write_len)
+*q++ = len;
 memcpy(q, str, len);
 q += len;
 *q_ptr = q;
@@ -628,12 +629,15 @@ static int mpegts_write_pmt(AVFormatContext *s, MpegTSService *service)
 *q++ = 'V';
 *q++ = 'A';
 } else if (st->codecpar->codec_id == AV_CODEC_ID_TIMED_ID3) {
-*q++ = 0x5; /* MPEG-2 registration descriptor */
-*q++ = 4;
-*q++ = 'I';
-*q++ = 'D';
-*q++ = '3';
-*q++ = ' ';
+const char *tag = "ID3 ";
+*q++ = 0x26; /* metadata descriptor */
+*q++ = 13;
+put16(, 0x);/* metadata application format */
+putstr8(, tag, 0);
+*q++ = 0xff;/* metadata format */
+putstr8(, tag, 0);
+*q++ = 0;/* metadata service ID */
+*q++ = 0xF;  /* metadata_locator_record_flag|MPEG_carriage_flags|reserved */
 }
 break;
 }
@@ -678,8 +682,8 @@ static void mpegts_write_sdt(AVFormatContext *s)
 desc_len_ptr = q;
 q++;
 *q++ = ts->service_type;
-putstr8(, service->provider_name);
-putstr8(, service->name);
+putstr8(, service->provider_name, 1);
+putstr8(, service->name, 1);
 desc_len_ptr[0] = q - desc_len_ptr - 1;
 
 /* fill descriptor length */
-- 
1.9.1

___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


[FFmpeg-devel] [PATCH] lavf/mpegtsenc: write metadata descriptor for timed ID3 packets

2016-05-19 Thread Stefano Sabatini
This is required since some softwares are not able to correctly recognize
the metadata.
---
 libavformat/mpegtsenc.c | 24 ++--
 1 file changed, 14 insertions(+), 10 deletions(-)

diff --git a/libavformat/mpegtsenc.c b/libavformat/mpegtsenc.c
index 5f22032..4b9e71b 100644
--- a/libavformat/mpegtsenc.c
+++ b/libavformat/mpegtsenc.c
@@ -254,7 +254,7 @@ static void mpegts_write_pat(AVFormatContext *s)
 }
 
 /* NOTE: !str is accepted for an empty string */
-static void putstr8(uint8_t **q_ptr, const char *str)
+static void putstr8(uint8_t **q_ptr, const char *str, int write_len)
 {
 uint8_t *q;
 int len;
@@ -264,7 +264,8 @@ static void putstr8(uint8_t **q_ptr, const char *str)
 len = 0;
 else
 len = strlen(str);
-*q++ = len;
+if (write_len)
+*q++ = len;
 memcpy(q, str, len);
 q += len;
 *q_ptr = q;
@@ -626,12 +627,15 @@ static int mpegts_write_pmt(AVFormatContext *s, 
MpegTSService *service)
 *q++ = 'V';
 *q++ = 'A';
 } else if (st->codecpar->codec_id == AV_CODEC_ID_TIMED_ID3) {
-*q++ = 0x5; /* MPEG-2 registration descriptor */
-*q++ = 4;
-*q++ = 'I';
-*q++ = 'D';
-*q++ = '3';
-*q++ = ' ';
+const char *tag = "ID3 ";
+*q++ = 0x26; /* metadata descriptor */
+*q++ = 13;
+put16(, 0x);/* metadata application format */
+putstr8(, tag, 0);
+*q++ = 0xff;/* metadata format */
+putstr8(, tag, 0);
+*q++ = 0;/* ID */
+*q++ = 0xF;
 }
 break;
 }
@@ -676,8 +680,8 @@ static void mpegts_write_sdt(AVFormatContext *s)
 desc_len_ptr = q;
 q++;
 *q++ = ts->service_type;
-putstr8(, service->provider_name);
-putstr8(, service->name);
+putstr8(, service->provider_name, 1);
+putstr8(, service->name, 1);
 desc_len_ptr[0] = q - desc_len_ptr - 1;
 
 /* fill descriptor length */
-- 
1.9.1

___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel