annotate libmpcodecs/ad_dmo.c @ 10581:4ebff25d9a05

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. This is the correct patch, sorry for the confusion.
author gabucino
date Tue, 12 Aug 2003 13:25:52 +0000
parents e7b199b406bb
children 9d0b052c4f74
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
8326
4849a0cfc2aa DMO audio support (including 6ch support too)
arpi
parents:
diff changeset
1 #include <stdio.h>
4849a0cfc2aa DMO audio support (including 6ch support too)
arpi
parents:
diff changeset
2 #include <stdlib.h>
4849a0cfc2aa DMO audio support (including 6ch support too)
arpi
parents:
diff changeset
3 #include <unistd.h>
4849a0cfc2aa DMO audio support (including 6ch support too)
arpi
parents:
diff changeset
4
4849a0cfc2aa DMO audio support (including 6ch support too)
arpi
parents:
diff changeset
5 #include "config.h"
4849a0cfc2aa DMO audio support (including 6ch support too)
arpi
parents:
diff changeset
6 #include "mp_msg.h"
4849a0cfc2aa DMO audio support (including 6ch support too)
arpi
parents:
diff changeset
7 #include "help_mp.h"
4849a0cfc2aa DMO audio support (including 6ch support too)
arpi
parents:
diff changeset
8
4849a0cfc2aa DMO audio support (including 6ch support too)
arpi
parents:
diff changeset
9 #ifdef USE_DIRECTSHOW
4849a0cfc2aa DMO audio support (including 6ch support too)
arpi
parents:
diff changeset
10
4849a0cfc2aa DMO audio support (including 6ch support too)
arpi
parents:
diff changeset
11 #include "ad_internal.h"
4849a0cfc2aa DMO audio support (including 6ch support too)
arpi
parents:
diff changeset
12
4849a0cfc2aa DMO audio support (including 6ch support too)
arpi
parents:
diff changeset
13 static ad_info_t info =
4849a0cfc2aa DMO audio support (including 6ch support too)
arpi
parents:
diff changeset
14 {
8327
arpi
parents: 8326
diff changeset
15 "Win32/DMO decoders",
8326
4849a0cfc2aa DMO audio support (including 6ch support too)
arpi
parents:
diff changeset
16 "dmo",
4849a0cfc2aa DMO audio support (including 6ch support too)
arpi
parents:
diff changeset
17 "A'rpi",
4849a0cfc2aa DMO audio support (including 6ch support too)
arpi
parents:
diff changeset
18 "avifile.sf.net",
4849a0cfc2aa DMO audio support (including 6ch support too)
arpi
parents:
diff changeset
19 ""
4849a0cfc2aa DMO audio support (including 6ch support too)
arpi
parents:
diff changeset
20 };
4849a0cfc2aa DMO audio support (including 6ch support too)
arpi
parents:
diff changeset
21
4849a0cfc2aa DMO audio support (including 6ch support too)
arpi
parents:
diff changeset
22 LIBAD_EXTERN(dmo)
4849a0cfc2aa DMO audio support (including 6ch support too)
arpi
parents:
diff changeset
23
4849a0cfc2aa DMO audio support (including 6ch support too)
arpi
parents:
diff changeset
24 #include "dmo/DMO_AudioDecoder.h"
4849a0cfc2aa DMO audio support (including 6ch support too)
arpi
parents:
diff changeset
25
4849a0cfc2aa DMO audio support (including 6ch support too)
arpi
parents:
diff changeset
26 static int init(sh_audio_t *sh)
4849a0cfc2aa DMO audio support (including 6ch support too)
arpi
parents:
diff changeset
27 {
4849a0cfc2aa DMO audio support (including 6ch support too)
arpi
parents:
diff changeset
28 return 1;
4849a0cfc2aa DMO audio support (including 6ch support too)
arpi
parents:
diff changeset
29 }
4849a0cfc2aa DMO audio support (including 6ch support too)
arpi
parents:
diff changeset
30
4849a0cfc2aa DMO audio support (including 6ch support too)
arpi
parents:
diff changeset
31 extern int audio_output_channels;
4849a0cfc2aa DMO audio support (including 6ch support too)
arpi
parents:
diff changeset
32
4849a0cfc2aa DMO audio support (including 6ch support too)
arpi
parents:
diff changeset
33 static int preinit(sh_audio_t *sh_audio)
4849a0cfc2aa DMO audio support (including 6ch support too)
arpi
parents:
diff changeset
34 {
4849a0cfc2aa DMO audio support (including 6ch support too)
arpi
parents:
diff changeset
35 DMO_AudioDecoder* ds_adec;
4849a0cfc2aa DMO audio support (including 6ch support too)
arpi
parents:
diff changeset
36 int chans=(audio_output_channels==sh_audio->wf->nChannels) ?
4849a0cfc2aa DMO audio support (including 6ch support too)
arpi
parents:
diff changeset
37 audio_output_channels : (sh_audio->wf->nChannels>=2 ? 2 : 1);
4849a0cfc2aa DMO audio support (including 6ch support too)
arpi
parents:
diff changeset
38 if(!(ds_adec=DMO_AudioDecoder_Open(sh_audio->codec->dll,&sh_audio->codec->guid,sh_audio->wf,chans)))
4849a0cfc2aa DMO audio support (including 6ch support too)
arpi
parents:
diff changeset
39 {
4849a0cfc2aa DMO audio support (including 6ch support too)
arpi
parents:
diff changeset
40 mp_msg(MSGT_DECAUDIO,MSGL_ERR,MSGTR_MissingDLLcodec,sh_audio->codec->dll);
4849a0cfc2aa DMO audio support (including 6ch support too)
arpi
parents:
diff changeset
41 return 0;
4849a0cfc2aa DMO audio support (including 6ch support too)
arpi
parents:
diff changeset
42 }
4849a0cfc2aa DMO audio support (including 6ch support too)
arpi
parents:
diff changeset
43 sh_audio->i_bps=sh_audio->wf->nAvgBytesPerSec;
4849a0cfc2aa DMO audio support (including 6ch support too)
arpi
parents:
diff changeset
44 sh_audio->channels=chans;
4849a0cfc2aa DMO audio support (including 6ch support too)
arpi
parents:
diff changeset
45 sh_audio->samplerate=sh_audio->wf->nSamplesPerSec;
4849a0cfc2aa DMO audio support (including 6ch support too)
arpi
parents:
diff changeset
46 sh_audio->audio_in_minsize=4*sh_audio->wf->nBlockAlign;
4849a0cfc2aa DMO audio support (including 6ch support too)
arpi
parents:
diff changeset
47 if(sh_audio->audio_in_minsize<8192) sh_audio->audio_in_minsize=8192;
4849a0cfc2aa DMO audio support (including 6ch support too)
arpi
parents:
diff changeset
48 sh_audio->audio_out_minsize=4*16384;
4849a0cfc2aa DMO audio support (including 6ch support too)
arpi
parents:
diff changeset
49 sh_audio->context = ds_adec;
4849a0cfc2aa DMO audio support (including 6ch support too)
arpi
parents:
diff changeset
50 mp_msg(MSGT_DECVIDEO,MSGL_V,"INFO: Win32/DMO audio codec init OK!\n");
4849a0cfc2aa DMO audio support (including 6ch support too)
arpi
parents:
diff changeset
51 return 1;
4849a0cfc2aa DMO audio support (including 6ch support too)
arpi
parents:
diff changeset
52 }
4849a0cfc2aa DMO audio support (including 6ch support too)
arpi
parents:
diff changeset
53
4849a0cfc2aa DMO audio support (including 6ch support too)
arpi
parents:
diff changeset
54 static void uninit(sh_audio_t *sh)
4849a0cfc2aa DMO audio support (including 6ch support too)
arpi
parents:
diff changeset
55 {
4849a0cfc2aa DMO audio support (including 6ch support too)
arpi
parents:
diff changeset
56 DMO_AudioDecoder* ds_adec = sh->context;
4849a0cfc2aa DMO audio support (including 6ch support too)
arpi
parents:
diff changeset
57 DMO_AudioDecoder_Destroy(ds_adec);
4849a0cfc2aa DMO audio support (including 6ch support too)
arpi
parents:
diff changeset
58 }
4849a0cfc2aa DMO audio support (including 6ch support too)
arpi
parents:
diff changeset
59
4849a0cfc2aa DMO audio support (including 6ch support too)
arpi
parents:
diff changeset
60 static int control(sh_audio_t *sh_audio,int cmd,void* arg, ...)
4849a0cfc2aa DMO audio support (including 6ch support too)
arpi
parents:
diff changeset
61 {
4849a0cfc2aa DMO audio support (including 6ch support too)
arpi
parents:
diff changeset
62 int skip;
4849a0cfc2aa DMO audio support (including 6ch support too)
arpi
parents:
diff changeset
63 switch(cmd)
4849a0cfc2aa DMO audio support (including 6ch support too)
arpi
parents:
diff changeset
64 {
4849a0cfc2aa DMO audio support (including 6ch support too)
arpi
parents:
diff changeset
65 case ADCTRL_SKIP_FRAME:
4849a0cfc2aa DMO audio support (including 6ch support too)
arpi
parents:
diff changeset
66 skip=sh_audio->wf->nBlockAlign;
4849a0cfc2aa DMO audio support (including 6ch support too)
arpi
parents:
diff changeset
67 if(skip<16){
4849a0cfc2aa DMO audio support (including 6ch support too)
arpi
parents:
diff changeset
68 skip=(sh_audio->wf->nAvgBytesPerSec/16)&(~7);
4849a0cfc2aa DMO audio support (including 6ch support too)
arpi
parents:
diff changeset
69 if(skip<16) skip=16;
4849a0cfc2aa DMO audio support (including 6ch support too)
arpi
parents:
diff changeset
70 }
4849a0cfc2aa DMO audio support (including 6ch support too)
arpi
parents:
diff changeset
71 demux_read_data(sh_audio->ds,NULL,skip);
4849a0cfc2aa DMO audio support (including 6ch support too)
arpi
parents:
diff changeset
72 return CONTROL_TRUE;
4849a0cfc2aa DMO audio support (including 6ch support too)
arpi
parents:
diff changeset
73 }
4849a0cfc2aa DMO audio support (including 6ch support too)
arpi
parents:
diff changeset
74 return CONTROL_UNKNOWN;
4849a0cfc2aa DMO audio support (including 6ch support too)
arpi
parents:
diff changeset
75 }
4849a0cfc2aa DMO audio support (including 6ch support too)
arpi
parents:
diff changeset
76
4849a0cfc2aa DMO audio support (including 6ch support too)
arpi
parents:
diff changeset
77 static int decode_audio(sh_audio_t *sh_audio,unsigned char *buf,int minlen,int maxlen)
4849a0cfc2aa DMO audio support (including 6ch support too)
arpi
parents:
diff changeset
78 {
4849a0cfc2aa DMO audio support (including 6ch support too)
arpi
parents:
diff changeset
79 DMO_AudioDecoder* ds_adec = sh_audio->context;
4849a0cfc2aa DMO audio support (including 6ch support too)
arpi
parents:
diff changeset
80 // int len=-1;
4849a0cfc2aa DMO audio support (including 6ch support too)
arpi
parents:
diff changeset
81 int size_in=0;
4849a0cfc2aa DMO audio support (including 6ch support too)
arpi
parents:
diff changeset
82 int size_out=0;
4849a0cfc2aa DMO audio support (including 6ch support too)
arpi
parents:
diff changeset
83 int srcsize=DMO_AudioDecoder_GetSrcSize(ds_adec, maxlen);
4849a0cfc2aa DMO audio support (including 6ch support too)
arpi
parents:
diff changeset
84 mp_msg(MSGT_DECAUDIO,MSGL_DBG3,"DMO says: srcsize=%d (buffsize=%d) out_size=%d\n",srcsize,sh_audio->a_in_buffer_size,maxlen);
4849a0cfc2aa DMO audio support (including 6ch support too)
arpi
parents:
diff changeset
85 if(srcsize>sh_audio->a_in_buffer_size) srcsize=sh_audio->a_in_buffer_size; // !!!!!!
4849a0cfc2aa DMO audio support (including 6ch support too)
arpi
parents:
diff changeset
86 if(sh_audio->a_in_buffer_len<srcsize){
4849a0cfc2aa DMO audio support (including 6ch support too)
arpi
parents:
diff changeset
87 sh_audio->a_in_buffer_len+=
4849a0cfc2aa DMO audio support (including 6ch support too)
arpi
parents:
diff changeset
88 demux_read_data(sh_audio->ds,&sh_audio->a_in_buffer[sh_audio->a_in_buffer_len],
4849a0cfc2aa DMO audio support (including 6ch support too)
arpi
parents:
diff changeset
89 srcsize-sh_audio->a_in_buffer_len);
4849a0cfc2aa DMO audio support (including 6ch support too)
arpi
parents:
diff changeset
90 }
4849a0cfc2aa DMO audio support (including 6ch support too)
arpi
parents:
diff changeset
91 DMO_AudioDecoder_Convert(ds_adec, sh_audio->a_in_buffer,sh_audio->a_in_buffer_len,
4849a0cfc2aa DMO audio support (including 6ch support too)
arpi
parents:
diff changeset
92 buf,maxlen, &size_in,&size_out);
4849a0cfc2aa DMO audio support (including 6ch support too)
arpi
parents:
diff changeset
93 mp_dbg(MSGT_DECAUDIO,MSGL_DBG2,"DMO: audio %d -> %d converted (in_buf_len=%d of %d) %d\n",size_in,size_out,sh_audio->a_in_buffer_len,sh_audio->a_in_buffer_size,ds_tell_pts(sh_audio->ds));
4849a0cfc2aa DMO audio support (including 6ch support too)
arpi
parents:
diff changeset
94 if(size_in>=sh_audio->a_in_buffer_len){
4849a0cfc2aa DMO audio support (including 6ch support too)
arpi
parents:
diff changeset
95 sh_audio->a_in_buffer_len=0;
4849a0cfc2aa DMO audio support (including 6ch support too)
arpi
parents:
diff changeset
96 } else {
4849a0cfc2aa DMO audio support (including 6ch support too)
arpi
parents:
diff changeset
97 sh_audio->a_in_buffer_len-=size_in;
4849a0cfc2aa DMO audio support (including 6ch support too)
arpi
parents:
diff changeset
98 memcpy(sh_audio->a_in_buffer,&sh_audio->a_in_buffer[size_in],sh_audio->a_in_buffer_len);
4849a0cfc2aa DMO audio support (including 6ch support too)
arpi
parents:
diff changeset
99 }
4849a0cfc2aa DMO audio support (including 6ch support too)
arpi
parents:
diff changeset
100 // len=size_out;
4849a0cfc2aa DMO audio support (including 6ch support too)
arpi
parents:
diff changeset
101 return size_out;
4849a0cfc2aa DMO audio support (including 6ch support too)
arpi
parents:
diff changeset
102 }
4849a0cfc2aa DMO audio support (including 6ch support too)
arpi
parents:
diff changeset
103 #endif