diff mbox series

[FFmpeg-devel,06/25] lavc/cbs: avoid an AVCodecContext dependency

Message ID 20210521180056.17496-6-anton@khirnov.net
State New
Headers show
Series [FFmpeg-devel,01/25] lavc: move small misc definitions into a separate header | expand

Checks

Context Check Description
andriy/x86_make success Make finished
andriy/x86_make_fate success Make fate finished
andriy/PPC64_make success Make finished
andriy/PPC64_make_fate success Make fate finished

Commit Message

Anton Khirnov May 21, 2021, 6 p.m. UTC
This will allow to stop including avcodec.h in future commits.
---
 libavcodec/av1_parser.c |  3 ++-
 libavcodec/av1dec.c     |  5 ++---
 libavcodec/cbs.c        | 10 ++++------
 libavcodec/cbs.h        | 11 ++++-------
 4 files changed, 12 insertions(+), 17 deletions(-)

Comments

James Almer May 22, 2021, 1:38 a.m. UTC | #1
On 5/21/2021 3:00 PM, Anton Khirnov wrote:
> This will allow to stop including avcodec.h in future commits.
> ---
>   libavcodec/av1_parser.c |  3 ++-
>   libavcodec/av1dec.c     |  5 ++---
>   libavcodec/cbs.c        | 10 ++++------
>   libavcodec/cbs.h        | 11 ++++-------
>   4 files changed, 12 insertions(+), 17 deletions(-)
> 
> diff --git a/libavcodec/av1_parser.c b/libavcodec/av1_parser.c
> index b6c8004ee3..29a979111e 100644
> --- a/libavcodec/av1_parser.c
> +++ b/libavcodec/av1_parser.c
> @@ -73,7 +73,8 @@ static int av1_parser_parse(AVCodecParserContext *ctx,
>       if (avctx->extradata_size && !s->parsed_extradata) {
>           s->parsed_extradata = 1;
>   
> -        ret = ff_cbs_read_extradata_from_codec(s->cbc, td, avctx);
> +        ret = ff_cbs_read_extradata_raw(s->cbc, td, avctx->extradata,
> +                                        avctx->extradata_size);
>           if (ret < 0) {
>               av_log(avctx, AV_LOG_WARNING, "Failed to parse extradata.\n");
>           }
> diff --git a/libavcodec/av1dec.c b/libavcodec/av1dec.c
> index 1dda0f9160..4caa7c3a9d 100644
> --- a/libavcodec/av1dec.c
> +++ b/libavcodec/av1dec.c
> @@ -657,9 +657,8 @@ static av_cold int av1_decode_init(AVCodecContext *avctx)
>       av_opt_set_int(s->cbc->priv_data, "operating_point", s->operating_point, 0);
>   
>       if (avctx->extradata && avctx->extradata_size) {
> -        ret = ff_cbs_read_extradata_from_codec(s->cbc,
> -                                               &s->current_obu,
> -                                               avctx);
> +        ret = ff_cbs_read_extradata_raw(s->cbc, &s->current_obu,
> +                                        avctx->extradata, avctx->extradata_size);
>           if (ret < 0) {
>               av_log(avctx, AV_LOG_WARNING, "Failed to read extradata.\n");
>               return ret;
> diff --git a/libavcodec/cbs.c b/libavcodec/cbs.c
> index bbfafb6530..960114cb0e 100644
> --- a/libavcodec/cbs.c
> +++ b/libavcodec/cbs.c
> @@ -276,13 +276,11 @@ int ff_cbs_read_extradata(CodedBitstreamContext *ctx,
>                            par->extradata_size, 1);
>   }
>   
> -int ff_cbs_read_extradata_from_codec(CodedBitstreamContext *ctx,
> -                                     CodedBitstreamFragment *frag,
> -                                     const AVCodecContext *avctx)
> +int ff_cbs_read_extradata_raw(CodedBitstreamContext *ctx,
> +                              CodedBitstreamFragment *frag,
> +                              const uint8_t *data, size_t size)
>   {
> -    return cbs_read_data(ctx, frag, NULL,
> -                         avctx->extradata,
> -                         avctx->extradata_size, 1);
> +    return cbs_read_data(ctx, frag, NULL, data, size, 1);
>   }
>   
>   int ff_cbs_read_packet(CodedBitstreamContext *ctx,
> diff --git a/libavcodec/cbs.h b/libavcodec/cbs.h
> index f022282b75..8b432393b8 100644
> --- a/libavcodec/cbs.h
> +++ b/libavcodec/cbs.h
> @@ -263,15 +263,12 @@ int ff_cbs_read_extradata(CodedBitstreamContext *ctx,
>                             const AVCodecParameters *par);
>   
>   /**
> - * Read the extradata bitstream found in a codec context into a
> + * Read the extradata bitstream provided as a raw array of bytes into a
>    * fragment, then split into units and decompose.
> - *
> - * This acts identical to ff_cbs_read_extradata() for the case where
> - * you already have a codec context.
>    */
> -int ff_cbs_read_extradata_from_codec(CodedBitstreamContext *ctx,
> -                                     CodedBitstreamFragment *frag,
> -                                     const AVCodecContext *avctx);
> +int ff_cbs_read_extradata_raw(CodedBitstreamContext *ctx,
> +                              CodedBitstreamFragment *frag,
> +                              const uint8_t *data, size_t size);

I'd prefer if you instead declare struct AVCodecContext in cbs.h and 
then include avcodec.h in cbs.c, like you did in codec.h, to keep the 
function as is.

>   
>   /**
>    * Read the data bitstream from a packet into a fragment, then
>
diff mbox series

Patch

diff --git a/libavcodec/av1_parser.c b/libavcodec/av1_parser.c
index b6c8004ee3..29a979111e 100644
--- a/libavcodec/av1_parser.c
+++ b/libavcodec/av1_parser.c
@@ -73,7 +73,8 @@  static int av1_parser_parse(AVCodecParserContext *ctx,
     if (avctx->extradata_size && !s->parsed_extradata) {
         s->parsed_extradata = 1;
 
-        ret = ff_cbs_read_extradata_from_codec(s->cbc, td, avctx);
+        ret = ff_cbs_read_extradata_raw(s->cbc, td, avctx->extradata,
+                                        avctx->extradata_size);
         if (ret < 0) {
             av_log(avctx, AV_LOG_WARNING, "Failed to parse extradata.\n");
         }
diff --git a/libavcodec/av1dec.c b/libavcodec/av1dec.c
index 1dda0f9160..4caa7c3a9d 100644
--- a/libavcodec/av1dec.c
+++ b/libavcodec/av1dec.c
@@ -657,9 +657,8 @@  static av_cold int av1_decode_init(AVCodecContext *avctx)
     av_opt_set_int(s->cbc->priv_data, "operating_point", s->operating_point, 0);
 
     if (avctx->extradata && avctx->extradata_size) {
-        ret = ff_cbs_read_extradata_from_codec(s->cbc,
-                                               &s->current_obu,
-                                               avctx);
+        ret = ff_cbs_read_extradata_raw(s->cbc, &s->current_obu,
+                                        avctx->extradata, avctx->extradata_size);
         if (ret < 0) {
             av_log(avctx, AV_LOG_WARNING, "Failed to read extradata.\n");
             return ret;
diff --git a/libavcodec/cbs.c b/libavcodec/cbs.c
index bbfafb6530..960114cb0e 100644
--- a/libavcodec/cbs.c
+++ b/libavcodec/cbs.c
@@ -276,13 +276,11 @@  int ff_cbs_read_extradata(CodedBitstreamContext *ctx,
                          par->extradata_size, 1);
 }
 
-int ff_cbs_read_extradata_from_codec(CodedBitstreamContext *ctx,
-                                     CodedBitstreamFragment *frag,
-                                     const AVCodecContext *avctx)
+int ff_cbs_read_extradata_raw(CodedBitstreamContext *ctx,
+                              CodedBitstreamFragment *frag,
+                              const uint8_t *data, size_t size)
 {
-    return cbs_read_data(ctx, frag, NULL,
-                         avctx->extradata,
-                         avctx->extradata_size, 1);
+    return cbs_read_data(ctx, frag, NULL, data, size, 1);
 }
 
 int ff_cbs_read_packet(CodedBitstreamContext *ctx,
diff --git a/libavcodec/cbs.h b/libavcodec/cbs.h
index f022282b75..8b432393b8 100644
--- a/libavcodec/cbs.h
+++ b/libavcodec/cbs.h
@@ -263,15 +263,12 @@  int ff_cbs_read_extradata(CodedBitstreamContext *ctx,
                           const AVCodecParameters *par);
 
 /**
- * Read the extradata bitstream found in a codec context into a
+ * Read the extradata bitstream provided as a raw array of bytes into a
  * fragment, then split into units and decompose.
- *
- * This acts identical to ff_cbs_read_extradata() for the case where
- * you already have a codec context.
  */
-int ff_cbs_read_extradata_from_codec(CodedBitstreamContext *ctx,
-                                     CodedBitstreamFragment *frag,
-                                     const AVCodecContext *avctx);
+int ff_cbs_read_extradata_raw(CodedBitstreamContext *ctx,
+                              CodedBitstreamFragment *frag,
+                              const uint8_t *data, size_t size);
 
 /**
  * Read the data bitstream from a packet into a fragment, then