Mercurial > mplayer.hg
view libmpcodecs/ad_dvdpcm.c @ 10579:f25d93203a71
From: Kir Kostuchenko <kir@users.sourceforge.net>
Hi, I found that command line options brightness, hue, contrast and
saturation does not works, becouse mplayer apply it, before open tv
(kernel says invalid ioctl). Here are simple fix. Please apply.
author | gabucino |
---|---|
date | Tue, 12 Aug 2003 11:32:51 +0000 |
parents | d388a7ee48c5 |
children | 97a6f049c9f8 |
line wrap: on
line source
#include <stdio.h> #include <stdlib.h> #include <unistd.h> #include "config.h" #include "ad_internal.h" static ad_info_t info = { "Uncompressed DVD/VOB LPCM audio decoder", "dvdpcm", "Nick Kurshev", "A'rpi", "" }; LIBAD_EXTERN(dvdpcm) static int init(sh_audio_t *sh) { /* DVD PCM Audio:*/ if(sh->codecdata_len==3){ // we have LPCM header: unsigned char h=sh->codecdata[1]; sh->channels=1+(h&7); switch((h>>4)&3){ case 0: sh->samplerate=48000;break; case 1: sh->samplerate=96000;break; case 2: sh->samplerate=44100;break; case 3: sh->samplerate=32000;break; } } else { // use defaults: sh->channels=2; sh->samplerate=48000; } sh->i_bps=2*sh->channels*sh->samplerate; return 1; } static int preinit(sh_audio_t *sh) { sh->audio_out_minsize=2048; return 1; } static void uninit(sh_audio_t *sh) { } static int control(sh_audio_t *sh,int cmd,void* arg, ...) { int skip; switch(cmd) { case ADCTRL_SKIP_FRAME: skip=sh->i_bps/16; skip=skip&(~3); demux_read_data(sh->ds,NULL,skip); return CONTROL_TRUE; } return CONTROL_UNKNOWN; } static int decode_audio(sh_audio_t *sh_audio,unsigned char *buf,int minlen,int maxlen) { int j,len; len=demux_read_data(sh_audio->ds,buf,(minlen+3)&(~3)); #ifndef WORDS_BIGENDIAN for(j=0;j<len;j+=2){ char x=buf[j]; buf[j]=buf[j+1]; buf[j+1]=x; } #endif return len; }