Browse Source

sout: switch to `vlc_frame_t` for the API

Frames are suppposed to pass into the stream output instead of blocks as
we'll likely want to use ancillaries.
pull/162/head
Alaric Senat 3 years ago
committed by Jean-Baptiste Kempf
parent
commit
eda2c093b5
  1. 5
      include/vlc_sout.h
  2. 11
      src/stream_output/stream_output.c

5
include/vlc_sout.h

@ -174,10 +174,11 @@ enum sout_stream_query_e {
SOUT_STREAM_IS_SYNCHRONOUS, /* arg1=bool *, can fail (assume false) */
};
typedef struct vlc_frame_t vlc_frame_t;
struct sout_stream_operations {
void *(*add)(sout_stream_t *, const es_format_t *);
void (*del)(sout_stream_t *, void *);
int (*send)(sout_stream_t *, void *, block_t *);
int (*send)(sout_stream_t *, void *, vlc_frame_t *);
int (*control)( sout_stream_t *, int, va_list );
void (*flush)( sout_stream_t *, void *);
void (*set_pcr)(sout_stream_t *, vlc_tick_t);
@ -201,10 +202,10 @@ VLC_API sout_stream_t *sout_StreamChainNew(vlc_object_t *parent,
VLC_API void *sout_StreamIdAdd(sout_stream_t *s, const es_format_t *fmt);
VLC_API void sout_StreamIdDel(sout_stream_t *s, void *id);
VLC_API int sout_StreamIdSend( sout_stream_t *s, void *id, block_t *b);
VLC_API void sout_StreamFlush(sout_stream_t *s, void *id);
VLC_API void sout_StreamSetPCR(sout_stream_t *s, vlc_tick_t pcr);
VLC_API int sout_StreamControlVa(sout_stream_t *s, int i_query, va_list args);
VLC_API int sout_StreamIdSend(sout_stream_t *, void *id, vlc_frame_t *);
VLC_API vlc_clock_main_t *sout_ClockMainCreate(sout_stream_t *) VLC_USED;
VLC_API void sout_ClockMainDelete(vlc_clock_main_t *);

11
src/stream_output/stream_output.c

@ -46,6 +46,7 @@
#include <vlc_meta.h>
#include <vlc_block.h>
#include <vlc_frame.h>
#include <vlc_codec.h>
#include <vlc_modules.h>
@ -198,14 +199,14 @@ void sout_InputFlush( sout_stream_t *p_sout,
*****************************************************************************/
int sout_InputSendBuffer( sout_stream_t *p_sout,
sout_packetizer_input_t *p_input,
block_t *p_buffer )
vlc_frame_t *frame )
{
if( p_input->b_flushed )
{
p_buffer->i_flags |= BLOCK_FLAG_DISCONTINUITY;
frame->i_flags |= VLC_FRAME_FLAG_DISCONTINUITY;
p_input->b_flushed = false;
}
return sout_StreamIdSend( p_sout, p_input->id, p_buffer );
return sout_StreamIdSend( p_sout, p_input->id, frame );
}
#undef sout_AccessOutNew
@ -711,12 +712,12 @@ void sout_StreamIdDel(sout_stream_t *s, void *id)
sout_StreamUnlock(s);
}
int sout_StreamIdSend(sout_stream_t *s, void *id, block_t *b)
int sout_StreamIdSend(sout_stream_t *s, void *id, vlc_frame_t *f)
{
int val;
sout_StreamLock(s);
val = s->ops->send(s, id, b);
val = s->ops->send(s, id, f);
sout_StreamUnlock(s);
return val;
}

Loading…
Cancel
Save