mirror of
https://github.com/mpv-player/mpv
synced 2024-12-25 00:02:13 +00:00
a522483629
Partial packet reads were needed because the video/audio parsers were working on top of them. So it could happen that a parser read a part of a packet, and returned that to the decoder. With libavformat/libavcodec, packets are already parsed, and everything is much simpler. Most of the simplifications in ad_spdif could have been done earlier. Remove some other stuff as well, like the questionable slave mode start time reporting (could be replaced by proper code, but we don't bother). Remove the unused skip_audio_frame() functionality as well (it was used by old demuxers). Some functions become private to demux.c, like demux_fill_buffer(). Introduce new packet read functions, which have simpler semantics. Packets returned from them are owned by the caller, and all packets in the demux.c packet queue are considered unread. Remove special code that dropped subtitle packets with size 0. This used to be needed because it caused special cases in the old code.
48 lines
1.5 KiB
C
48 lines
1.5 KiB
C
/*
|
|
* This file is part of MPlayer.
|
|
*
|
|
* MPlayer is free software; you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License as published by
|
|
* the Free Software Foundation; either version 2 of the License, or
|
|
* (at your option) any later version.
|
|
*
|
|
* MPlayer is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License along
|
|
* with MPlayer; if not, write to the Free Software Foundation, Inc.,
|
|
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
*/
|
|
|
|
#ifndef MPLAYER_AD_H
|
|
#define MPLAYER_AD_H
|
|
|
|
#include "core/codecs.h"
|
|
#include "demux/stheader.h"
|
|
|
|
typedef struct mp_codec_info ad_info_t;
|
|
|
|
struct mp_decoder_list;
|
|
|
|
/* interface of video decoder drivers */
|
|
typedef struct ad_functions
|
|
{
|
|
const char *name;
|
|
void (*add_decoders)(struct mp_decoder_list *list);
|
|
int (*preinit)(sh_audio_t *sh);
|
|
int (*init)(sh_audio_t *sh, const char *decoder);
|
|
void (*uninit)(sh_audio_t *sh);
|
|
int (*control)(sh_audio_t *sh, int cmd, void *arg);
|
|
int (*decode_audio)(sh_audio_t *sh, unsigned char *buffer, int minlen,
|
|
int maxlen);
|
|
} ad_functions_t;
|
|
|
|
// NULL terminated array of all drivers
|
|
extern const ad_functions_t * const mpcodecs_ad_drivers[];
|
|
|
|
#define ADCTRL_RESYNC_STREAM 1 // resync, called after seeking
|
|
|
|
#endif /* MPLAYER_AD_H */
|