Browse Source

vlc_codec: add vlc_encoder_operations structure

pull/134/head
Alexandre Janniaux 5 years ago
committed by Hugo Beauzée-Luyssen
parent
commit
2511756030
  1. 35
      include/vlc_codec.h
  2. 13
      src/input/decoder_helpers.c
  3. 1
      src/libvlccore.sym

35
include/vlc_codec.h

@ -238,6 +238,17 @@ VLC_API vlc_decoder_device *vlc_encoder_GetDecoderDevice( encoder_t * );
* @{
*/
struct vlc_encoder_operations
{
void (*close)(encoder_t *);
union {
block_t * (*encode_video)(encoder_t *, picture_t *);
block_t * (*encode_audio)(encoder_t *, block_t *);
block_t * (*encode_sub)(encoder_t *, subpicture_t *);
};
};
struct encoder_t
{
struct vlc_object_t obj;
@ -267,9 +278,33 @@ struct encoder_t
config_chain_t *p_cfg;
/* Private structure for the owner of the encoder */
const struct vlc_encoder_operations *ops;
const struct encoder_owner_callbacks *cbs;
};
VLC_API void vlc_encoder_Destroy(encoder_t *encoder);
static inline block_t *
vlc_encoder_EncodeVideo(encoder_t *encoder, picture_t *pic)
{
assert(encoder->fmt_in.i_cat == VIDEO_ES);
return encoder->ops->encode_video(encoder, pic);
}
static inline block_t *
vlc_encoder_EncodeAudio(encoder_t *encoder, block_t *audio)
{
assert(encoder->fmt_in.i_cat == AUDIO_ES);
return encoder->ops->encode_audio(encoder, audio);
}
static inline block_t *
vlc_encoder_EncodeSub(encoder_t *encoder, subpicture_t *sub)
{
assert(encoder->fmt_in.i_cat == SPU_ES);
return encoder->ops->encode_sub(encoder, sub);
}
/**
* @}
*

13
src/input/decoder_helpers.c

@ -301,3 +301,16 @@ vlc_decoder_device *vlc_encoder_GetDecoderDevice( encoder_t *enc )
return enc->cbs->video.get_device( enc );
}
void vlc_encoder_Destroy(encoder_t *encoder)
{
if (encoder->ops->close != NULL)
encoder->ops->close(encoder);
if (encoder->p_module != NULL)
module_unneed(encoder, encoder->p_module);
es_format_Clean(&encoder->fmt_in);
es_format_Clean(&encoder->fmt_out);
vlc_object_delete(encoder);
}

1
src/libvlccore.sym

@ -795,6 +795,7 @@ vlc_es_id_GetInputId
vlc_es_id_GetCat
vlc_es_id_GetStrId
vlc_es_id_IsStrIdStable
vlc_encoder_Destroy
vlc_thumbnailer_Create
vlc_thumbnailer_RequestByTime
vlc_thumbnailer_RequestByPos

Loading…
Cancel
Save