Re: [FFmpeg-devel] [PATCH 1/4] avformat/mxfenc: pass MXFPackage around instead of type

2017-11-28 Thread Mark Reid
On Tue, Nov 28, 2017 at 3:05 PM, Tomas Härdin  wrote:

> On Tue, 2017-11-28 at 21:09 +0100, Michael Niedermayer wrote:
> > On Mon, Nov 27, 2017 at 11:00:51AM +0100, Tomas Härdin wrote:
> > > On Sun, 2017-11-26 at 21:42 -0800, Mark Reid wrote:
> > > > ---
> > > >  libavformat/mxfenc.c | 99 +-
> > > > 
> > > > --
> > > >  1 file changed, 55 insertions(+), 44 deletions(-)
> > > >
> > > > diff --git a/libavformat/mxfenc.c b/libavformat/mxfenc.c
> > > > index 035e65ed43..ed6ecbf541 100644
> > > > --- a/libavformat/mxfenc.c
> > > > +++ b/libavformat/mxfenc.c
> > > > @@ -101,6 +101,12 @@ typedef struct MXFContainerEssenceEntry {
> > > >  void (*write_desc)(AVFormatContext *, AVStream *);
> > > >  } MXFContainerEssenceEntry;
> > > >
> > > > +typedef struct MXFPackage {
> > > > +char *name;
> > > > +enum MXFMetadataSetType type;
> > > > +int instance;
> > > > +} MXFPackage;
> > > > [...]
> > >
> > > Looks OK.
> >
> > will apply
> >
> > thanks
>
> It sounded like he's working on an alternate patchset, see the PATCH
> 3/4 thread
>

I see this was already applied, this one wasn't going to change in my new
patchset so it should be okay.


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


Re: [FFmpeg-devel] [PATCH 1/4] avformat/mxfenc: pass MXFPackage around instead of type

2017-11-28 Thread Tomas Härdin
On Tue, 2017-11-28 at 21:09 +0100, Michael Niedermayer wrote:
> On Mon, Nov 27, 2017 at 11:00:51AM +0100, Tomas Härdin wrote:
> > On Sun, 2017-11-26 at 21:42 -0800, Mark Reid wrote:
> > > ---
> > >  libavformat/mxfenc.c | 99 +-
> > > 
> > > --
> > >  1 file changed, 55 insertions(+), 44 deletions(-)
> > > 
> > > diff --git a/libavformat/mxfenc.c b/libavformat/mxfenc.c
> > > index 035e65ed43..ed6ecbf541 100644
> > > --- a/libavformat/mxfenc.c
> > > +++ b/libavformat/mxfenc.c
> > > @@ -101,6 +101,12 @@ typedef struct MXFContainerEssenceEntry {
> > >  void (*write_desc)(AVFormatContext *, AVStream *);
> > >  } MXFContainerEssenceEntry;
> > >  
> > > +typedef struct MXFPackage {
> > > +char *name;
> > > +enum MXFMetadataSetType type;
> > > +int instance;
> > > +} MXFPackage;
> > > [...]
> > 
> > Looks OK.
> 
> will apply
> 
> thanks

It sounded like he's working on an alternate patchset, see the PATCH
3/4 thread

/Tomas

signature.asc
Description: This is a digitally signed message part
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


Re: [FFmpeg-devel] [PATCH 1/4] avformat/mxfenc: pass MXFPackage around instead of type

2017-11-28 Thread Michael Niedermayer
On Mon, Nov 27, 2017 at 11:00:51AM +0100, Tomas Härdin wrote:
> On Sun, 2017-11-26 at 21:42 -0800, Mark Reid wrote:
> > ---
> >  libavformat/mxfenc.c | 99 +-
> > --
> >  1 file changed, 55 insertions(+), 44 deletions(-)
> > 
> > diff --git a/libavformat/mxfenc.c b/libavformat/mxfenc.c
> > index 035e65ed43..ed6ecbf541 100644
> > --- a/libavformat/mxfenc.c
> > +++ b/libavformat/mxfenc.c
> > @@ -101,6 +101,12 @@ typedef struct MXFContainerEssenceEntry {
> >  void (*write_desc)(AVFormatContext *, AVStream *);
> >  } MXFContainerEssenceEntry;
> >  
> > +typedef struct MXFPackage {
> > +char *name;
> > +enum MXFMetadataSetType type;
> > +int instance;
> > +} MXFPackage;
> > [...]
> 
> Looks OK.

will apply

thanks


> This would make it easier if someone is crazy enough to
> implement the higher op types in the future. I still maintain that
> libmxf/bmxlib is better for that however
> 
> /Tomas



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


-- 
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 1/4] avformat/mxfenc: pass MXFPackage around instead of type

2017-11-27 Thread Tomas Härdin
On Sun, 2017-11-26 at 21:42 -0800, Mark Reid wrote:
> ---
>  libavformat/mxfenc.c | 99 +-
> --
>  1 file changed, 55 insertions(+), 44 deletions(-)
> 
> diff --git a/libavformat/mxfenc.c b/libavformat/mxfenc.c
> index 035e65ed43..ed6ecbf541 100644
> --- a/libavformat/mxfenc.c
> +++ b/libavformat/mxfenc.c
> @@ -101,6 +101,12 @@ typedef struct MXFContainerEssenceEntry {
>  void (*write_desc)(AVFormatContext *, AVStream *);
>  } MXFContainerEssenceEntry;
>  
> +typedef struct MXFPackage {
> +char *name;
> +enum MXFMetadataSetType type;
> +int instance;
> +} MXFPackage;
> [...]

Looks OK. This would make it easier if someone is crazy enough to
implement the higher op types in the future. I still maintain that
libmxf/bmxlib is better for that however

/Tomas

signature.asc
Description: This is a digitally signed message part
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


[FFmpeg-devel] [PATCH 1/4] avformat/mxfenc: pass MXFPackage around instead of type

2017-11-26 Thread Mark Reid
---
 libavformat/mxfenc.c | 99 +---
 1 file changed, 55 insertions(+), 44 deletions(-)

diff --git a/libavformat/mxfenc.c b/libavformat/mxfenc.c
index 035e65ed43..ed6ecbf541 100644
--- a/libavformat/mxfenc.c
+++ b/libavformat/mxfenc.c
@@ -101,6 +101,12 @@ typedef struct MXFContainerEssenceEntry {
 void (*write_desc)(AVFormatContext *, AVStream *);
 } MXFContainerEssenceEntry;
 
+typedef struct MXFPackage {
+char *name;
+enum MXFMetadataSetType type;
+int instance;
+} MXFPackage;
+
 enum ULIndex {
 INDEX_MPEG2 = 0,
 INDEX_AES3,
@@ -808,13 +814,14 @@ static void mxf_write_identification(AVFormatContext *s)
 avio_wb64(pb, mxf->timestamp);
 }
 
-static void mxf_write_content_storage(AVFormatContext *s)
+static void mxf_write_content_storage(AVFormatContext *s, MXFPackage 
*packages, int package_count)
 {
 AVIOContext *pb = s->pb;
+int i;
 
 mxf_write_metadata_key(pb, 0x011800);
 PRINT_KEY(s, "content storage key", pb->buf_ptr - 16);
-klv_encode_ber_length(pb, 92);
+klv_encode_ber_length(pb, 60 + (16 * package_count));
 
 // write uid
 mxf_write_local_tag(pb, 16, 0x3C0A);
@@ -822,10 +829,11 @@ static void mxf_write_content_storage(AVFormatContext *s)
 PRINT_KEY(s, "content storage uid", pb->buf_ptr - 16);
 
 // write package reference
-mxf_write_local_tag(pb, 16 * 2 + 8, 0x1901);
-mxf_write_refs_count(pb, 2);
-mxf_write_uuid(pb, MaterialPackage, 0);
-mxf_write_uuid(pb, SourcePackage, 0);
+mxf_write_local_tag(pb, 16 * package_count + 8, 0x1901);
+mxf_write_refs_count(pb, package_count);
+for (i = 0; i < package_count; i++) {
+mxf_write_uuid(pb, packages[i].type, packages[i].instance);
+}
 
 // write essence container data
 mxf_write_local_tag(pb, 8 + 16, 0x1902);
@@ -833,7 +841,7 @@ static void mxf_write_content_storage(AVFormatContext *s)
 mxf_write_uuid(pb, EssenceContainerData, 0);
 }
 
-static void mxf_write_track(AVFormatContext *s, AVStream *st, enum 
MXFMetadataSetType type)
+static void mxf_write_track(AVFormatContext *s, AVStream *st, MXFPackage 
*package)
 {
 MXFContext *mxf = s->priv_data;
 AVIOContext *pb = s->pb;
@@ -845,7 +853,7 @@ static void mxf_write_track(AVFormatContext *s, AVStream 
*st, enum MXFMetadataSe
 
 // write track uid
 mxf_write_local_tag(pb, 16, 0x3C0A);
-mxf_write_uuid(pb, type == MaterialPackage ? Track : Track + TypeBottom, 
st->index);
+mxf_write_uuid(pb, package->type == MaterialPackage ? Track : Track + 
TypeBottom, st->index);
 PRINT_KEY(s, "track uid", pb->buf_ptr - 16);
 
 // write track id
@@ -854,7 +862,7 @@ static void mxf_write_track(AVFormatContext *s, AVStream 
*st, enum MXFMetadataSe
 
 // write track number
 mxf_write_local_tag(pb, 4, 0x4804);
-if (type == MaterialPackage)
+if (package->type == MaterialPackage)
 avio_wb32(pb, 0); // track number of material package is 0
 else
 avio_write(pb, sc->track_essence_element_key + 12, 4);
@@ -876,7 +884,7 @@ static void mxf_write_track(AVFormatContext *s, AVStream 
*st, enum MXFMetadataSe
 
 // write sequence refs
 mxf_write_local_tag(pb, 16, 0x4803);
-mxf_write_uuid(pb, type == MaterialPackage ? Sequence: Sequence + 
TypeBottom, st->index);
+mxf_write_uuid(pb, package->type == MaterialPackage ? Sequence: Sequence + 
TypeBottom, st->index);
 }
 
 static const uint8_t smpte_12m_timecode_track_data_ul[] = { 
0x06,0x0E,0x2B,0x34,0x04,0x01,0x01,0x01,0x01,0x03,0x02,0x01,0x01,0x00,0x00,0x00 
};
@@ -905,7 +913,7 @@ static void mxf_write_common_fields(AVFormatContext *s, 
AVStream *st)
 }
 }
 
-static void mxf_write_sequence(AVFormatContext *s, AVStream *st, enum 
MXFMetadataSetType type)
+static void mxf_write_sequence(AVFormatContext *s, AVStream *st, MXFPackage 
*package)
 {
 MXFContext *mxf = s->priv_data;
 AVIOContext *pb = s->pb;
@@ -916,7 +924,7 @@ static void mxf_write_sequence(AVFormatContext *s, AVStream 
*st, enum MXFMetadat
 klv_encode_ber_length(pb, 80);
 
 mxf_write_local_tag(pb, 16, 0x3C0A);
-mxf_write_uuid(pb, type == MaterialPackage ? Sequence: Sequence + 
TypeBottom, st->index);
+mxf_write_uuid(pb, package->type == MaterialPackage ? Sequence: Sequence + 
TypeBottom, st->index);
 
 PRINT_KEY(s, "sequence uid", pb->buf_ptr - 16);
 mxf_write_common_fields(s, st);
@@ -928,12 +936,12 @@ static void mxf_write_sequence(AVFormatContext *s, 
AVStream *st, enum MXFMetadat
 component = TimecodeComponent;
 else
 component = SourceClip;
-if (type == SourcePackage)
+if (package->type == SourcePackage)
 component += TypeBottom;
 mxf_write_uuid(pb, component, st->index);
 }
 
-static void mxf_write_timecode_component(AVFormatContext *s, AVStream *st, 
enum MXFMetadataSetType type)
+static void mxf_write_timecode_component(AVFormatContext *s, AVStream *st, 
MXFPackage *package)
 {
 MXFContext *mxf =