Re: [FFmpeg-devel] [PATCH v3 2/2] lavf: add prores bitstream demuxer and muxer

2023-07-27 Thread Derek Buitenhuis
On 7/27/2023 9:16 AM, hung kuishing wrote:
> Let me briefly describe what I needed at that time:
> I have another prores encoder and another mov muxer, what I need to do are:
> 1. use "another mov muxer" to encapsulate prores bitstream generated by 
> ffmpeg.
> 2. use ffmpeg to encapsulate prores bitstream generated by "another prores 
> encoder" .
> 
> I know I can implement them by calling the ffmpeg api,  but how can I 
> implement them by ffmpeg tool? 
> So, I developed these patches.

So this format was created as a weird hack to enable the ffmpeg CLI to be jammed
into such a workflow.

My NAK remains.

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

To unsubscribe, visit link above, or email
ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".


Re: [FFmpeg-devel] [PATCH v3 2/2] lavf: add prores bitstream demuxer and muxer

2023-07-27 Thread hung kuishing
> From: ffmpeg-devel  On Behalf Of
> Andreas Rheinhardt
> Sent: Thursday, July 27, 2023 1:11 AM
> To: ffmpeg-devel@ffmpeg.org
> Subject: Re: [FFmpeg-devel] [PATCH v3 2/2] lavf: add prores bitstream
> demuxer and muxer
> 
> hung kuishing:
> >> From: ffmpeg-devel  On Behalf
> Of
> >> Derek Buitenhuis
> >> Sent: Wednesday, July 26, 2023 8:55 PM
> >> To: ffmpeg-devel@ffmpeg.org
> >> Subject: Re: [FFmpeg-devel] [PATCH v3 2/2] lavf: add prores
> bitstream
> >> demuxer and muxer
> >>
> >> On 7/26/2023 10:28 AM, hung kuishing wrote:
> >>> Signed-off-by: clarkh 
> >>> ---
> >>>  libavformat/Makefile |  2 ++
> >>>  libavformat/allformats.c |  2 ++
> >>>  libavformat/proresdec.c  | 66
> >> 
> >>>  libavformat/rawenc.c | 13 
> >>>  4 files changed, 83 insertions(+)
> >>>  create mode 100644 libavformat/proresdec.c
> >>
> >> At this point I am giving this a strong NAK.
> >>
> >> Both my initial comment[1] and subsequent comment[2] about the
> first
> >> one being ignore, have been ignored. It is a simple question.
> >
> > Sorry for not replying to your question in time!
> > This patch originated from a need in my work to wrap the ProRes
> bitstream generated by ffmpeg into another mov wrapper.
> 
> So there are no files in the wild for this? Then there is no point in this. Or
> is this something that other mov wrappers (you meant muxers!?)
> accept?
> (Couldn't you just have used e.g. nut (or even mov itself) to temporarily
> store the ProRes data and then pipe this to to the foreign
> muxer?)

Hi, Andreas Rheinhardt:
Let me briefly describe what I needed at that time:
I have another prores encoder and another mov muxer, what I need to do are:
1. use "another mov muxer" to encapsulate prores bitstream generated by ffmpeg.
2. use ffmpeg to encapsulate prores bitstream generated by "another prores 
encoder" .

I know I can implement them by calling the ffmpeg api,  but how can I implement 
them by ffmpeg tool? 
So, I developed these patches.



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

To unsubscribe, visit link above, or email
ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".


Re: [FFmpeg-devel] [PATCH v3 2/2] lavf: add prores bitstream demuxer and muxer

2023-07-26 Thread Andreas Rheinhardt
hung kuishing:
>> From: ffmpeg-devel  On Behalf Of
>> Derek Buitenhuis
>> Sent: Wednesday, July 26, 2023 8:55 PM
>> To: ffmpeg-devel@ffmpeg.org
>> Subject: Re: [FFmpeg-devel] [PATCH v3 2/2] lavf: add prores bitstream
>> demuxer and muxer
>>
>> On 7/26/2023 10:28 AM, hung kuishing wrote:
>>> Signed-off-by: clarkh 
>>> ---
>>>  libavformat/Makefile |  2 ++
>>>  libavformat/allformats.c |  2 ++
>>>  libavformat/proresdec.c  | 66
>> 
>>>  libavformat/rawenc.c | 13 
>>>  4 files changed, 83 insertions(+)
>>>  create mode 100644 libavformat/proresdec.c
>>
>> At this point I am giving this a strong NAK.
>>
>> Both my initial comment[1] and subsequent comment[2] about the
>> first one being ignore, have been ignored. It is a simple question.
> 
> Sorry for not replying to your question in time!
> This patch originated from a need in my work to wrap the ProRes bitstream 
> generated by ffmpeg into another mov wrapper.

So there are no files in the wild for this? Then there is no point in
this. Or is this something that other mov wrappers (you meant muxers!?)
accept?
(Couldn't you just have used e.g. nut (or even mov itself) to
temporarily store the ProRes data and then pipe this to to the foreign
muxer?)

- Andreas

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

To unsubscribe, visit link above, or email
ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".


Re: [FFmpeg-devel] [PATCH v3 2/2] lavf: add prores bitstream demuxer and muxer

2023-07-26 Thread Kieran Kunhya
On Wed, 26 Jul 2023 at 13:55, Derek Buitenhuis 
wrote:

> On 7/26/2023 10:28 AM, hung kuishing wrote:
> > Signed-off-by: clarkh 
> > ---
> >  libavformat/Makefile |  2 ++
> >  libavformat/allformats.c |  2 ++
> >  libavformat/proresdec.c  | 66 
> >  libavformat/rawenc.c | 13 
> >  4 files changed, 83 insertions(+)
> >  create mode 100644 libavformat/proresdec.c
>
> At this point I am giving this a strong NAK.
>
> Both my initial comment[1] and subsequent comment[2] about the first one
> being ignore,
> have been ignored. It is a simple question.
>

I agree we should not be perpetuating custom formats such as raw ProRes.

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

To unsubscribe, visit link above, or email
ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".


Re: [FFmpeg-devel] [PATCH v3 2/2] lavf: add prores bitstream demuxer and muxer

2023-07-26 Thread hung kuishing
> From: ffmpeg-devel  On Behalf Of
> Derek Buitenhuis
> Sent: Wednesday, July 26, 2023 8:55 PM
> To: ffmpeg-devel@ffmpeg.org
> Subject: Re: [FFmpeg-devel] [PATCH v3 2/2] lavf: add prores bitstream
> demuxer and muxer
> 
> On 7/26/2023 10:28 AM, hung kuishing wrote:
> > Signed-off-by: clarkh 
> > ---
> >  libavformat/Makefile |  2 ++
> >  libavformat/allformats.c |  2 ++
> >  libavformat/proresdec.c  | 66
> 
> >  libavformat/rawenc.c | 13 
> >  4 files changed, 83 insertions(+)
> >  create mode 100644 libavformat/proresdec.c
> 
> At this point I am giving this a strong NAK.
> 
> Both my initial comment[1] and subsequent comment[2] about the
> first one being ignore, have been ignored. It is a simple question.

Sorry for not replying to your question in time!
This patch originated from a need in my work to wrap the ProRes bitstream 
generated by ffmpeg into another mov wrapper. 
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".


Re: [FFmpeg-devel] [PATCH v3 2/2] lavf: add prores bitstream demuxer and muxer

2023-07-26 Thread Derek Buitenhuis
On 7/26/2023 10:28 AM, hung kuishing wrote:
> Signed-off-by: clarkh 
> ---
>  libavformat/Makefile |  2 ++
>  libavformat/allformats.c |  2 ++
>  libavformat/proresdec.c  | 66 
>  libavformat/rawenc.c | 13 
>  4 files changed, 83 insertions(+)
>  create mode 100644 libavformat/proresdec.c

At this point I am giving this a strong NAK.

Both my initial comment[1] and subsequent comment[2] about the first one being 
ignore,
have been ignored. It is a simple question.

- Derek

[1] http://ffmpeg.org/pipermail/ffmpeg-devel/2023-July/312552.html
[2] http://ffmpeg.org/pipermail/ffmpeg-devel/2023-July/312635.html
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".


[FFmpeg-devel] [PATCH v3 2/2] lavf: add prores bitstream demuxer and muxer

2023-07-26 Thread hung kuishing
Signed-off-by: clarkh 
---
 libavformat/Makefile |  2 ++
 libavformat/allformats.c |  2 ++
 libavformat/proresdec.c  | 66 
 libavformat/rawenc.c | 13 
 4 files changed, 83 insertions(+)
 create mode 100644 libavformat/proresdec.c

diff --git a/libavformat/Makefile b/libavformat/Makefile
index bd78c206b9..16def0765b 100644
--- a/libavformat/Makefile
+++ b/libavformat/Makefile
@@ -480,6 +480,8 @@ OBJS-$(CONFIG_PDV_DEMUXER)   += pdvdec.o
 OBJS-$(CONFIG_PJS_DEMUXER)   += pjsdec.o subtitles.o
 OBJS-$(CONFIG_PMP_DEMUXER)   += pmpdec.o
 OBJS-$(CONFIG_PP_BNK_DEMUXER)+= pp_bnk.o
+OBJS-$(CONFIG_PRORES_DEMUXER)+= proresdec.o rawdec.o
+OBJS-$(CONFIG_PRORES_MUXER)  += rawenc.o
 OBJS-$(CONFIG_PVA_DEMUXER)   += pva.o
 OBJS-$(CONFIG_PVF_DEMUXER)   += pvfdec.o pcm.o
 OBJS-$(CONFIG_QCP_DEMUXER)   += qcp.o
diff --git a/libavformat/allformats.c b/libavformat/allformats.c
index 6324952bd2..0b762034ca 100644
--- a/libavformat/allformats.c
+++ b/libavformat/allformats.c
@@ -378,6 +378,8 @@ extern const AVInputFormat  ff_pdv_demuxer;
 extern const AVInputFormat  ff_pjs_demuxer;
 extern const AVInputFormat  ff_pmp_demuxer;
 extern const AVInputFormat  ff_pp_bnk_demuxer;
+extern const AVInputFormat  ff_prores_demuxer;
+extern const FFOutputFormat ff_prores_muxer;
 extern const FFOutputFormat ff_psp_muxer;
 extern const AVInputFormat  ff_pva_demuxer;
 extern const AVInputFormat  ff_pvf_demuxer;
diff --git a/libavformat/proresdec.c b/libavformat/proresdec.c
new file mode 100644
index 00..67f25b79ec
--- /dev/null
+++ b/libavformat/proresdec.c
@@ -0,0 +1,66 @@
+/*
+ * ProRes bitstream probe
+ * Copyright (c) 2023 clarkh 
+ *
+ * This file is part of FFmpeg.
+ *
+ * FFmpeg is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * FFmpeg is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with FFmpeg; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#include "libavutil/intreadwrite.h"
+#include "libavcodec/proresdata.h"
+#include "avformat.h"
+#include "rawdec.h"
+
+#define FRAME_FIXED_HEADER_SIZE 20
+
+static int prores_check_frame_header(const uint8_t *buf, const int data_size)
+{
+int hdr_size, width, height;
+int version, alpha_info;
+
+hdr_size = AV_RB16(buf);
+if (hdr_size < FRAME_FIXED_HEADER_SIZE)
+return AVERROR_INVALIDDATA;
+
+version = buf[3];
+if (version > 1)
+return AVERROR_INVALIDDATA;
+
+width  = AV_RB16(buf + 8);
+height = AV_RB16(buf + 10);
+if (!width || !height)
+return AVERROR_INVALIDDATA;
+
+alpha_info = buf[17] & 0x0f;
+if (alpha_info > 2)
+return AVERROR_INVALIDDATA;
+
+return 0;
+}
+
+static int prores_probe(const AVProbeData *p)
+{
+// 8: frame_size(4B) + frame_identifier(4B)
+if (p->buf_size < (8 + FRAME_FIXED_HEADER_SIZE) || AV_RB32(p->buf + 4) != 
FRAME_ID)
+return 0;
+
+if (prores_check_frame_header(p->buf + 8, p->buf_size - 8) < 0)
+return 0;
+
+return AVPROBE_SCORE_MAX;
+}
+
+FF_DEF_RAWVIDEO_DEMUXER(prores, "raw ProRes", prores_probe, "prores", 
AV_CODEC_ID_PRORES)
diff --git a/libavformat/rawenc.c b/libavformat/rawenc.c
index f916db13a2..28ca47ae70 100644
--- a/libavformat/rawenc.c
+++ b/libavformat/rawenc.c
@@ -538,6 +538,19 @@ const FFOutputFormat ff_obu_muxer = {
 };
 #endif
 
+#if CONFIG_PRORES_MUXER
+const FFOutputFormat ff_prores_muxer = {
+.p.name= "prores",
+.p.long_name   = NULL_IF_CONFIG_SMALL("raw prores video"),
+.p.extensions  = "prores",
+.p.audio_codec = AV_CODEC_ID_NONE,
+.p.video_codec = AV_CODEC_ID_PRORES,
+.init  = force_one_stream,
+.write_packet  = ff_raw_write_packet,
+.p.flags   = AVFMT_NOTIMESTAMPS,
+};
+#endif
+
 #if CONFIG_RAWVIDEO_MUXER
 const FFOutputFormat ff_rawvideo_muxer = {
 .p.name= "rawvideo",
-- 
2.34.1

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

To unsubscribe, visit link above, or email
ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".