[vlc-devel] [PATCH 1/3] mediacodec: switch API function to using p_sys

Thomas Guillem thomas at gllm.fr
Mon Mar 1 14:32:21 UTC 2021


Hello,

Patch set LGTM

On Tue, Feb 16, 2021, at 14:46, Alexandre Janniaux wrote:
> These functions will be used with the decoder_t object closed, but the
> p_sys still alive, and they are only using the p_sys object.
> 
> No functional changes.
> ---
>  modules/codec/omxil/mediacodec.c | 48 ++++++++++++++------------------
>  1 file changed, 21 insertions(+), 27 deletions(-)
> 
> diff --git a/modules/codec/omxil/mediacodec.c b/modules/codec/omxil/mediacodec.c
> index f8435f342c..07e1107879 100644
> --- a/modules/codec/omxil/mediacodec.c
> +++ b/modules/codec/omxil/mediacodec.c
> @@ -62,7 +62,8 @@ typedef int (*dec_on_new_block_cb)(decoder_t *, block_t **);
>  /**
>   * Callback called when decoder is flushing.
>   */
> -typedef void (*dec_on_flush_cb)(decoder_t *);
> +struct decoder_sys_t;
> +typedef void (*dec_on_flush_cb)(struct decoder_sys_t *);
>  
>  /**
>   * Callback called when DecodeBlock try to get an output buffer (pic or block).
> @@ -78,7 +79,7 @@ struct android_picture_ctx
>      atomic_int index;
>  };
>  
> -typedef struct
> +typedef struct decoder_sys_t
>  {
>      mc_api api;
>  
> @@ -156,17 +157,17 @@ static int Video_OnNewBlock(decoder_t *, block_t **);
>  static int VideoHXXX_OnNewBlock(decoder_t *, block_t **);
>  static int VideoMPEG2_OnNewBlock(decoder_t *, block_t **);
>  static int VideoVC1_OnNewBlock(decoder_t *, block_t **);
> -static void Video_OnFlush(decoder_t *);
> +static void Video_OnFlush(decoder_sys_t *);
>  static int Video_ProcessOutput(decoder_t *, mc_api_out *, picture_t **,
>                                 block_t **);
>  static int DecodeBlock(decoder_t *, block_t *);
>  
>  static int Audio_OnNewBlock(decoder_t *, block_t **);
> -static void Audio_OnFlush(decoder_t *);
> +static void Audio_OnFlush(decoder_sys_t *);
>  static int Audio_ProcessOutput(decoder_t *, mc_api_out *, picture_t **,
>                                 block_t **);
>  
> -static void DecodeFlushLocked(decoder_t *);
> +static void DecodeFlushLocked(decoder_sys_t *);
>  static void DecodeFlush(decoder_t *);
>  static void StopMediaCodec(decoder_sys_t *);
>  static void *OutThread(void *);
> @@ -1026,10 +1027,8 @@ static int OpenDecoderJni(vlc_object_t *p_this)
>      return OpenDecoder(p_this, MediaCodecJni_Init);
>  }
>  
> -static void AbortDecoderLocked(decoder_t *p_dec)
> +static void AbortDecoderLocked(decoder_sys_t *p_sys)
>  {
> -    decoder_sys_t *p_sys = p_dec->p_sys;
> -
>      if (!p_sys->b_aborted)
>      {
>          p_sys->b_aborted = true;
> @@ -1060,9 +1059,9 @@ static void CloseDecoder(vlc_object_t *p_this)
>  
>      vlc_mutex_lock(&p_sys->lock);
>      /* Unblock output thread waiting in dequeue_out */
> -    DecodeFlushLocked(p_dec);
> +    DecodeFlushLocked(p_sys);
>      /* Cancel the output thread */
> -    AbortDecoderLocked(p_dec);
> +    AbortDecoderLocked(p_sys);
>      vlc_mutex_unlock(&p_sys->lock);
>  
>      vlc_join(p_sys->out_thread, NULL);
> @@ -1350,9 +1349,8 @@ static int Audio_ProcessOutput(decoder_t *p_dec, 
> mc_api_out *p_out,
>      }
>  }
>  
> -static void DecodeFlushLocked(decoder_t *p_dec)
> +static void DecodeFlushLocked(decoder_sys_t *p_sys)
>  {
> -    decoder_sys_t *p_sys = p_dec->p_sys;
>      bool b_had_input = p_sys->b_input_dequeued;
>  
>      p_sys->b_input_dequeued = false;
> @@ -1362,11 +1360,11 @@ static void DecodeFlushLocked(decoder_t *p_dec)
>      /* Resend CODEC_CONFIG buffer after a flush */
>      p_sys->i_csd_send = 0;
>  
> -    p_sys->pf_on_flush(p_dec);
> +    p_sys->pf_on_flush(p_sys);
>  
>      if (b_had_input && p_sys->api.flush(&p_sys->api) != VLC_SUCCESS)
>      {
> -        AbortDecoderLocked(p_dec);
> +        AbortDecoderLocked(p_sys);
>          return;
>      }
>  
> @@ -1381,7 +1379,7 @@ static void DecodeFlush(decoder_t *p_dec)
>      decoder_sys_t *p_sys = p_dec->p_sys;
>  
>      vlc_mutex_lock(&p_sys->lock);
> -    DecodeFlushLocked(p_dec);
> +    DecodeFlushLocked(p_dec->p_sys);
>      vlc_mutex_unlock(&p_sys->lock);
>  }
>  
> @@ -1576,7 +1574,7 @@ static int QueueBlockLocked(decoder_t *p_dec, 
> block_t *p_in_block,
>          if (!p_sys->b_drained)
>          {
>              msg_Err(p_dec, "OutThread timed out");
> -            AbortDecoderLocked(p_dec);
> +            AbortDecoderLocked(p_sys);
>          }
>          p_sys->b_drained = false;
>      }
> @@ -1584,7 +1582,7 @@ static int QueueBlockLocked(decoder_t *p_dec, 
> block_t *p_in_block,
>      return VLC_SUCCESS;
>  
>  error:
> -    AbortDecoderLocked(p_dec);
> +    AbortDecoderLocked(p_sys);
>      return VLC_EGENERIC;
>  }
>  
> @@ -1617,7 +1615,7 @@ static int DecodeBlock(decoder_t *p_dec, block_t 
> *p_in_block)
>      {
>          if (p_sys->b_output_ready)
>              QueueBlockLocked(p_dec, NULL, true);
> -        DecodeFlushLocked(p_dec);
> +        DecodeFlushLocked(p_sys);
>          if (p_sys->b_aborted)
>              goto end;
>          if (p_in_block->i_flags & BLOCK_FLAG_CORRUPTED)
> @@ -1640,7 +1638,7 @@ static int DecodeBlock(decoder_t *p_dec, block_t 
> *p_in_block)
>      {
>          if (i_ret != 0)
>          {
> -            AbortDecoderLocked(p_dec);
> +            AbortDecoderLocked(p_sys);
>              msg_Err(p_dec, "pf_on_new_block failed");
>          }
>          goto end;
> @@ -1654,7 +1652,7 @@ static int DecodeBlock(decoder_t *p_dec, block_t 
> *p_in_block)
>          /* Drain and flush before restart to unblock OutThread */
>          if (p_sys->b_output_ready)
>              QueueBlockLocked(p_dec, NULL, true);
> -        DecodeFlushLocked(p_dec);
> +        DecodeFlushLocked(p_sys);
>          if (p_sys->b_aborted)
>              goto end;
>  
> @@ -1670,7 +1668,7 @@ static int DecodeBlock(decoder_t *p_dec, block_t 
> *p_in_block)
>                  break;
>              default:
>                  msg_Err(p_dec, "StartMediaCodec failed");
> -                AbortDecoderLocked(p_dec);
> +                AbortDecoderLocked(p_sys);
>                  goto end;
>              }
>          }
> @@ -1806,10 +1804,8 @@ static int VideoVC1_OnNewBlock(decoder_t *p_dec, 
> block_t **pp_block)
>      return Video_OnNewBlock(p_dec, pp_block);
>  }
>  
> -static void Video_OnFlush(decoder_t *p_dec)
> +static void Video_OnFlush(decoder_sys_t *p_sys)
>  {
> -    decoder_sys_t *p_sys = p_dec->p_sys;
> -
>      timestamp_FifoEmpty(p_sys->video.timestamp_fifo);
>      /* Invalidate all pictures that are currently in flight
>       * since flushing make all previous indices returned by
> @@ -1833,9 +1829,7 @@ static int Audio_OnNewBlock(decoder_t *p_dec, 
> block_t **pp_block)
>      return 1;
>  }
>  
> -static void Audio_OnFlush(decoder_t *p_dec)
> +static void Audio_OnFlush(decoder_sys_t *p_sys)
>  {
> -    decoder_sys_t *p_sys = p_dec->p_sys;
> -
>      date_Set(&p_sys->audio.i_end_date, VLC_TICK_INVALID);
>  }
> -- 
> 2.30.1
> 
> _______________________________________________
> vlc-devel mailing list
> To unsubscribe or modify your subscription options:
> https://mailman.videolan.org/listinfo/vlc-devel


More information about the vlc-devel mailing list