Mercurial > mplayer.hg
view libmpdemux/audio_in.h @ 10578:b9d289fd8a57
10000l, the old code was slow as hell, copying stuff extra times and
actually broken -- blanking the whole screen at each 'page flip' with
-dr enabled. benchmarks:
before:
56% cpu for decode
56% cpu for vo with no -dr
25% cpu for vo with -dr
after:
56% cpu for decode
25% cpu for vo without -dr
0% cpu for vo with -dr
if vo_fbdev is going to do pageflip, it needs to do it for REAL, using
vertical scroll registers (like g2), not copying a temp buffer (which
will shear anyway and is super-slow).
author | rfelker |
---|---|
date | Tue, 12 Aug 2003 08:24:24 +0000 |
parents | 54eac4cf587c |
children | 66e491c35dc8 |
line wrap: on
line source
#ifndef _audio_in_h #define _audio_in_h #define AUDIO_IN_ALSA 1 #define AUDIO_IN_OSS 2 #include "config.h" #ifdef HAVE_ALSA9 #include <alsa/asoundlib.h> typedef struct { char *device; snd_pcm_t *handle; snd_output_t *log; int buffer_time, period_time, chunk_size; size_t bits_per_sample, bits_per_frame; } ai_alsa_t; #endif #ifdef USE_OSS_AUDIO typedef struct { char *device; int audio_fd; } ai_oss_t; #endif typedef struct { int type; int setup; /* requested values */ int req_channels; int req_samplerate; /* real values read-only */ int channels; int samplerate; int blocksize; int bytes_per_sample; int samplesize; #ifdef HAVE_ALSA9 ai_alsa_t alsa; #endif #ifdef USE_OSS_AUDIO ai_oss_t oss; #endif } audio_in_t; int audio_in_init(audio_in_t *ai, int type); int audio_in_setup(audio_in_t *ai); int audio_in_set_device(audio_in_t *ai, char *device); int audio_in_set_samplerate(audio_in_t *ai, int rate); int audio_in_set_channels(audio_in_t *ai, int channels); int audio_in_uninit(audio_in_t *ai); int audio_in_start_capture(audio_in_t *ai); int audio_in_read_chunk(audio_in_t *ai, unsigned char *buffer); #ifdef HAVE_ALSA9 int ai_alsa_setup(audio_in_t *ai); int ai_alsa_init(audio_in_t *ai); int ai_alsa_xrun(audio_in_t *ai); #endif #ifdef USE_OSS_AUDIO int ai_oss_set_samplerate(audio_in_t *ai); int ai_oss_set_channels(audio_in_t *ai); int ai_oss_init(audio_in_t *ai); #endif #endif /* _audio_in_h */