Browse Source

mux: extradata: pass vlc_object_t during creation

A VLC object is currently needed for parsers like hxxx_helper.
pull/143/head
Alexandre Janniaux 4 years ago
committed by Steve Lhomme
parent
commit
43d0425363
  1. 5
      modules/mux/extradata.c
  2. 4
      modules/mux/extradata.h
  3. 3
      modules/mux/mp4/mp4.c

5
modules/mux/extradata.c

@ -38,6 +38,7 @@ struct mux_extradata_builder_cb
struct mux_extradata_builder_t
{
struct mux_extradata_builder_cb cb;
vlc_object_t *obj;
void *priv;
uint8_t *p_extra;
size_t i_extra;
@ -177,7 +178,8 @@ static const struct
{ EXTRADATA_ISOBMFF, VLC_CODEC_EAC3, &eac3_cb },
};
mux_extradata_builder_t * mux_extradata_builder_New(vlc_fourcc_t fcc,
mux_extradata_builder_t * mux_extradata_builder_New(vlc_object_t *obj,
vlc_fourcc_t fcc,
enum mux_extradata_type_e type)
{
const struct mux_extradata_builder_cb *cb = NULL;
@ -202,6 +204,7 @@ mux_extradata_builder_t * mux_extradata_builder_New(vlc_fourcc_t fcc,
m->priv = NULL;
m->fcc = fcc;
m->cb = *cb;
m->obj = obj;
if(m->cb.pf_init && m->cb.pf_init(m) != 0)
{
free(m);

4
modules/mux/extradata.h

@ -25,7 +25,9 @@ enum mux_extradata_type_e
EXTRADATA_ISOBMFF,
};
mux_extradata_builder_t * mux_extradata_builder_New(vlc_fourcc_t, enum mux_extradata_type_e);
mux_extradata_builder_t * mux_extradata_builder_New(vlc_object_t *obj,
vlc_fourcc_t,
enum mux_extradata_type_e);
void mux_extradata_builder_Delete(mux_extradata_builder_t *);
void mux_extradata_builder_Feed(mux_extradata_builder_t *, const uint8_t *, size_t);
size_t mux_extradata_builder_Get(mux_extradata_builder_t *, const uint8_t **);

3
modules/mux/mp4/mp4.c

@ -516,7 +516,8 @@ static int AddStream(sout_mux_t *p_mux, sout_input_t *p_input)
return VLC_ENOMEM;
}
p_stream->extrabuilder = mux_extradata_builder_New(p_input->p_fmt->i_codec,
p_stream->extrabuilder = mux_extradata_builder_New(VLC_OBJECT(p_mux),
p_input->p_fmt->i_codec,
EXTRADATA_ISOBMFF);
p_input->p_sys = p_stream;

Loading…
Cancel
Save