VLC 4.0.0-dev
decoder.h
Go to the documentation of this file.
1/*****************************************************************************
2 * decoder.h: Input decoder functions
3 *****************************************************************************
4 * Copyright (C) 1998-2008 VLC authors and VideoLAN
5 * Copyright (C) 2008 Laurent Aimar
6 *
7 * Authors: Laurent Aimar <fenrir@via.ecp.fr>
8 *
9 * This program is free software; you can redistribute it and/or modify it
10 * under the terms of the GNU Lesser General Public License as published by
11 * the Free Software Foundation; either version 2.1 of the License, or
12 * (at your option) any later version.
13 *
14 * This program is distributed in the hope that it will be useful,
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 * GNU Lesser General Public License for more details.
18 *
19 * You should have received a copy of the GNU Lesser General Public License
20 * along with this program; if not, write to the Free Software Foundation,
21 * Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
22 *****************************************************************************/
23
24#ifndef LIBVLC_INPUT_DECODER_H
25#define LIBVLC_INPUT_DECODER_H 1
26
27#include <vlc_common.h>
28#include <vlc_codec.h>
29#include <vlc_mouse.h>
30
32 /* notifications */
34 enum vlc_vout_order vout_order,
35 void *userdata);
37 void *userdata);
39 void *userdata);
40
41 void (*on_new_video_stats)(vlc_input_decoder_t *decoder, unsigned decoded,
42 unsigned lost, unsigned displayed, unsigned late,
43 void *userdata);
44 void (*on_new_audio_stats)(vlc_input_decoder_t *decoder, unsigned decoded,
45 unsigned lost, unsigned played, void *userdata);
46
47 /* requests */
49 input_attachment_t ***ppp_attachment,
50 void *userdata);
51};
52
54{
56 const char *str_id;
62 void *cbs_data;
63};
64
67 const struct vlc_input_decoder_cfg *cfg );
68
69/**
70 * This function changes the pause state.
71 * The date parameter MUST hold the exact date at which the change has been
72 * done for proper vout/aout pausing.
73 */
74void vlc_input_decoder_ChangePause( vlc_input_decoder_t *, bool b_paused, vlc_tick_t i_date );
75
76/**
77 * Changes the decoder rate.
78 *
79 * This function changes rate of the intended playback speed to nominal speed.
80 * \param dec decoder
81 * \param rate playback rate (default is 1)
82 */
84
85/**
86 * This function makes the decoder start waiting for a valid data block from its fifo.
87 */
89
90/**
91 * This function waits for the decoder to actually receive data.
92 */
94
95/**
96 * This function exits the waiting mode of the decoder.
97 */
99
100/**
101 * This function returns true if the decoder fifo is empty and false otherwise.
102 */
104
105/**
106 * This function activates the request closed caption channel.
107 */
108int vlc_input_decoder_SetCcState( vlc_input_decoder_t *, vlc_fourcc_t, int i_channel, bool b_decode );
109
110/**
111 * This function returns an error if the requested channel does not exist and
112 * set pb_decode to the channel status(active or not) otherwise.
113 */
114int vlc_input_decoder_GetCcState( vlc_input_decoder_t *, vlc_fourcc_t, int i_channel, bool *pb_decode );
115
116/**
117 * This function get cc channels descriptions
118 */
120
121/**
122 * This function forces the display of the next picture
123 */
125
127{
128 struct {
129 /* True if the ES format or meta data have changed since the last call.
130 * */
132 /* If changed is true, a copy of the current es_format_t, MUST be freed
133 * with es_format_Clean() */
135 /* If changed is true, a copy of the current description, can be NULL,
136 * MUST be freed with vlc_meta_Delete.() */
139
140 struct {
142 } cc;
143};
144
145/**
146 * Get the last status of the decoder.
147 */
149 struct vlc_input_decoder_status *status );
150
151/**
152 * This function returns the current size in bytes of the decoder fifo
153 */
155
159
163
164#endif
void vlc_input_decoder_GetCcDesc(vlc_input_decoder_t *, decoder_cc_desc_t *)
This function get cc channels descriptions.
void vlc_input_decoder_StopWait(vlc_input_decoder_t *)
This function exits the waiting mode of the decoder.
Definition: decoder.c:2553
int vlc_input_decoder_DelVoutOverlay(vlc_input_decoder_t *, size_t)
Definition: decoder.c:2720
void vlc_input_decoder_StartWait(vlc_input_decoder_t *)
This function makes the decoder start waiting for a valid data block from its fifo.
Definition: decoder.c:2538
int vlc_input_decoder_SetCcState(vlc_input_decoder_t *, vlc_fourcc_t, int i_channel, bool b_decode)
This function activates the request closed caption channel.
Definition: decoder.c:2423
void vlc_input_decoder_ChangePause(vlc_input_decoder_t *, bool b_paused, vlc_tick_t i_date)
This function changes the pause state.
Definition: decoder.c:2510
size_t vlc_input_decoder_GetFifoSize(vlc_input_decoder_t *p_dec)
This function returns the current size in bytes of the decoder fifo.
Definition: decoder.c:2640
void vlc_input_decoder_FrameNext(vlc_input_decoder_t *p_dec)
This function forces the display of the next picture.
Definition: decoder.c:2591
vlc_input_decoder_t * vlc_input_decoder_New(vlc_object_t *parent, const struct vlc_input_decoder_cfg *cfg)
Spawns a new decoder thread from the input thread.
Definition: decoder.c:2181
int vlc_input_decoder_AddVoutOverlay(vlc_input_decoder_t *, subpicture_t *, size_t *)
Definition: decoder.c:2690
int vlc_input_decoder_GetVbiPage(vlc_input_decoder_t *, bool *opaque)
Definition: decoder.c:2651
void vlc_input_decoder_Wait(vlc_input_decoder_t *)
This function waits for the decoder to actually receive data.
Definition: decoder.c:2565
void vlc_input_decoder_ChangeRate(vlc_input_decoder_t *dec, float rate)
Changes the decoder rate.
Definition: decoder.c:2524
void vlc_input_decoder_SetVoutMouseEvent(vlc_input_decoder_t *, vlc_mouse_event, void *)
Definition: decoder.c:2676
bool vlc_input_decoder_IsEmpty(vlc_input_decoder_t *)
This function returns true if the decoder fifo is empty and false otherwise.
Definition: decoder.c:2284
void vlc_input_decoder_GetStatus(vlc_input_decoder_t *p_dec, struct vlc_input_decoder_status *status)
Get the last status of the decoder.
Definition: decoder.c:2609
int vlc_input_decoder_GetCcState(vlc_input_decoder_t *, vlc_fourcc_t, int i_channel, bool *pb_decode)
This function returns an error if the requested channel does not exist and set pb_decode to the chann...
Definition: decoder.c:2495
int vlc_input_decoder_SetVbiOpaque(vlc_input_decoder_t *, bool opaque)
Definition: decoder.c:2668
int vlc_input_decoder_SetVbiPage(vlc_input_decoder_t *, unsigned page)
Definition: decoder.c:2660
uint32_t vlc_fourcc_t
Definition: fourcc_gen.c:33
vlc_vout_order
vout or spu_channel order
Definition: vlc_vout.h:71
input_type
Definition: input_internal.h:57
Definition: vlc_codec.h:207
Definition: vlc_es.h:630
Definition: vlc_input.h:161
Definition: resource.c:58
Video picture.
Definition: vlc_picture.h:130
Definition: vlc_sout.h:188
Video subtitle.
Definition: vlc_subpicture.h:167
Definition: clock.c:67
Definition: decoder.h:31
void(* on_new_video_stats)(vlc_input_decoder_t *decoder, unsigned decoded, unsigned lost, unsigned displayed, unsigned late, void *userdata)
Definition: decoder.h:41
int(* get_attachments)(vlc_input_decoder_t *decoder, input_attachment_t ***ppp_attachment, void *userdata)
Definition: decoder.h:48
void(* on_vout_started)(vlc_input_decoder_t *decoder, vout_thread_t *vout, enum vlc_vout_order vout_order, void *userdata)
Definition: decoder.h:33
void(* on_new_audio_stats)(vlc_input_decoder_t *decoder, unsigned decoded, unsigned lost, unsigned played, void *userdata)
Definition: decoder.h:44
void(* on_vout_stopped)(vlc_input_decoder_t *decoder, vout_thread_t *vout, void *userdata)
Definition: decoder.h:36
void(* on_thumbnail_ready)(vlc_input_decoder_t *decoder, picture_t *pic, void *userdata)
Definition: decoder.h:38
Definition: decoder.h:54
const es_format_t * fmt
Definition: decoder.h:55
input_resource_t * resource
Definition: decoder.h:58
sout_stream_t * sout
Definition: decoder.h:59
const struct vlc_input_decoder_callbacks * cbs
Definition: decoder.h:61
vlc_clock_t * clock
Definition: decoder.h:57
const char * str_id
Definition: decoder.h:56
enum input_type input_type
Definition: decoder.h:60
void * cbs_data
Definition: decoder.h:62
Definition: decoder.h:127
es_format_t fmt
Definition: decoder.h:134
vlc_meta_t * meta
Definition: decoder.h:137
struct vlc_input_decoder_status::@14 cc
bool changed
Definition: decoder.h:131
decoder_cc_desc_t desc
Definition: decoder.h:141
struct vlc_input_decoder_status::@13 format
Definition: decoder.c:116
Definition: meta.c:40
VLC object common members.
Definition: vlc_objects.h:45
Video output thread descriptor.
Definition: vlc_vout.h:55
Decoder and encoder modules interface.
This file is a collection of common definitions and types.
void(* vlc_mouse_event)(const vlc_mouse_t *mouse, void *user_data)
Mouse event callback.
Definition: vlc_mouse.h:62
int64_t vlc_tick_t
High precision date or time interval.
Definition: vlc_tick.h:45