Mercurial > mplayer.hg
annotate libaf/af_mp.c @ 12337:6f1b4c989914
soft skipping for mencoder. rather than skipping decoding/filtering
frames that will be skipped, mencoded tells vf_softskip (if present)
that it should drop the next frame. this allows filters that need to
see every input frame (inverse telecine, denoise3d, ...) to see
skipped frames before they get dropped.
in principle, a smarter softskip filter could be written that would
buffer frames and choose to drop the one with least change, rather
than strictly dropping the next one.
author | rfelker |
---|---|
date | Wed, 28 Apr 2004 04:29:17 +0000 |
parents | a6615e7bc710 |
children | 7f8eb5f6814a |
rev | line source |
---|---|
8167 | 1 #include "af.h" |
2 | |
3 /* Decodes the format from mplayer format to libaf format */ | |
4 int af_format_decode(int ifmt) | |
5 { | |
6 int ofmt = ~0; | |
7 // Check input ifmt | |
8 switch(ifmt){ | |
9 case(AFMT_U8): | |
10 ofmt = AF_FORMAT_LE|AF_FORMAT_US; break; | |
11 case(AFMT_S8): | |
12 ofmt = AF_FORMAT_LE|AF_FORMAT_SI; break; | |
13 case(AFMT_S16_LE): | |
14 ofmt = AF_FORMAT_LE|AF_FORMAT_SI; break; | |
15 case(AFMT_S16_BE): | |
16 ofmt = AF_FORMAT_BE|AF_FORMAT_SI; break; | |
17 case(AFMT_U16_LE): | |
18 ofmt = AF_FORMAT_LE|AF_FORMAT_US; break; | |
19 case(AFMT_U16_BE): | |
20 ofmt = AF_FORMAT_BE|AF_FORMAT_US; break; | |
21 case(AFMT_S32_LE): | |
22 ofmt = AF_FORMAT_LE|AF_FORMAT_SI; break; | |
23 case(AFMT_S32_BE): | |
24 ofmt = AF_FORMAT_BE|AF_FORMAT_SI; break; | |
25 case(AFMT_IMA_ADPCM): | |
26 ofmt = AF_FORMAT_IMA_ADPCM; break; | |
27 case(AFMT_MU_LAW): | |
28 ofmt = AF_FORMAT_MU_LAW; break; | |
29 case(AFMT_A_LAW): | |
30 ofmt = AF_FORMAT_A_LAW; break; | |
31 case(AFMT_MPEG): | |
32 ofmt = AF_FORMAT_MPEG2; break; | |
33 case(AFMT_AC3): | |
34 ofmt = AF_FORMAT_AC3; break; | |
8233 | 35 case(AFMT_FLOAT): |
8952
2369087bb777
Fix for endianess conversion if input to libaf is float
anders
parents:
8233
diff
changeset
|
36 ofmt = AF_FORMAT_F | AF_FORMAT_NE; break; |
8167 | 37 default: |
38 //This can not happen .... | |
39 af_msg(AF_MSG_FATAL,"Unrecognized input audio format %i\n",ifmt); | |
40 break; | |
41 } | |
42 return ofmt; | |
43 } | |
8993
a6615e7bc710
added af_format_encode() to convert sample format from libaf to mplayer (OSS)
arpi
parents:
8952
diff
changeset
|
44 |
a6615e7bc710
added af_format_encode() to convert sample format from libaf to mplayer (OSS)
arpi
parents:
8952
diff
changeset
|
45 /* Encodes the format from libaf format to mplayer (OSS) format */ |
a6615e7bc710
added af_format_encode() to convert sample format from libaf to mplayer (OSS)
arpi
parents:
8952
diff
changeset
|
46 int af_format_encode(void* fmtp) |
a6615e7bc710
added af_format_encode() to convert sample format from libaf to mplayer (OSS)
arpi
parents:
8952
diff
changeset
|
47 { |
a6615e7bc710
added af_format_encode() to convert sample format from libaf to mplayer (OSS)
arpi
parents:
8952
diff
changeset
|
48 af_data_t* fmt=(af_data_t*) fmtp; |
a6615e7bc710
added af_format_encode() to convert sample format from libaf to mplayer (OSS)
arpi
parents:
8952
diff
changeset
|
49 switch(fmt->format&AF_FORMAT_SPECIAL_MASK){ |
a6615e7bc710
added af_format_encode() to convert sample format from libaf to mplayer (OSS)
arpi
parents:
8952
diff
changeset
|
50 case 0: // PCM: |
a6615e7bc710
added af_format_encode() to convert sample format from libaf to mplayer (OSS)
arpi
parents:
8952
diff
changeset
|
51 if((fmt->format&AF_FORMAT_POINT_MASK)==AF_FORMAT_I){ |
a6615e7bc710
added af_format_encode() to convert sample format from libaf to mplayer (OSS)
arpi
parents:
8952
diff
changeset
|
52 if((fmt->format&AF_FORMAT_SIGN_MASK)==AF_FORMAT_SI){ |
a6615e7bc710
added af_format_encode() to convert sample format from libaf to mplayer (OSS)
arpi
parents:
8952
diff
changeset
|
53 // signed int PCM: |
a6615e7bc710
added af_format_encode() to convert sample format from libaf to mplayer (OSS)
arpi
parents:
8952
diff
changeset
|
54 switch(fmt->bps){ |
a6615e7bc710
added af_format_encode() to convert sample format from libaf to mplayer (OSS)
arpi
parents:
8952
diff
changeset
|
55 case 1: return AFMT_S8; |
a6615e7bc710
added af_format_encode() to convert sample format from libaf to mplayer (OSS)
arpi
parents:
8952
diff
changeset
|
56 case 2: return (fmt->format&AF_FORMAT_LE) ? AFMT_S16_LE : AFMT_S16_BE; |
a6615e7bc710
added af_format_encode() to convert sample format from libaf to mplayer (OSS)
arpi
parents:
8952
diff
changeset
|
57 case 4: return (fmt->format&AF_FORMAT_LE) ? AFMT_S32_LE : AFMT_S32_BE; |
a6615e7bc710
added af_format_encode() to convert sample format from libaf to mplayer (OSS)
arpi
parents:
8952
diff
changeset
|
58 } |
a6615e7bc710
added af_format_encode() to convert sample format from libaf to mplayer (OSS)
arpi
parents:
8952
diff
changeset
|
59 } else { |
a6615e7bc710
added af_format_encode() to convert sample format from libaf to mplayer (OSS)
arpi
parents:
8952
diff
changeset
|
60 // unsigned int PCM: |
a6615e7bc710
added af_format_encode() to convert sample format from libaf to mplayer (OSS)
arpi
parents:
8952
diff
changeset
|
61 switch(fmt->bps){ |
a6615e7bc710
added af_format_encode() to convert sample format from libaf to mplayer (OSS)
arpi
parents:
8952
diff
changeset
|
62 case 1: return AFMT_U8; |
a6615e7bc710
added af_format_encode() to convert sample format from libaf to mplayer (OSS)
arpi
parents:
8952
diff
changeset
|
63 case 2: return (fmt->format&AF_FORMAT_LE) ? AFMT_U16_LE : AFMT_U16_BE; |
a6615e7bc710
added af_format_encode() to convert sample format from libaf to mplayer (OSS)
arpi
parents:
8952
diff
changeset
|
64 // case 4: return (fmt->format&AF_FORMAT_LE) ? AFMT_U32_LE : AFMT_U32_BE; |
a6615e7bc710
added af_format_encode() to convert sample format from libaf to mplayer (OSS)
arpi
parents:
8952
diff
changeset
|
65 } |
a6615e7bc710
added af_format_encode() to convert sample format from libaf to mplayer (OSS)
arpi
parents:
8952
diff
changeset
|
66 } |
a6615e7bc710
added af_format_encode() to convert sample format from libaf to mplayer (OSS)
arpi
parents:
8952
diff
changeset
|
67 } else { |
a6615e7bc710
added af_format_encode() to convert sample format from libaf to mplayer (OSS)
arpi
parents:
8952
diff
changeset
|
68 // float PCM: |
a6615e7bc710
added af_format_encode() to convert sample format from libaf to mplayer (OSS)
arpi
parents:
8952
diff
changeset
|
69 return AFMT_FLOAT; // FIXME? |
a6615e7bc710
added af_format_encode() to convert sample format from libaf to mplayer (OSS)
arpi
parents:
8952
diff
changeset
|
70 } |
a6615e7bc710
added af_format_encode() to convert sample format from libaf to mplayer (OSS)
arpi
parents:
8952
diff
changeset
|
71 break; |
a6615e7bc710
added af_format_encode() to convert sample format from libaf to mplayer (OSS)
arpi
parents:
8952
diff
changeset
|
72 case AF_FORMAT_MU_LAW: return AFMT_MU_LAW; |
a6615e7bc710
added af_format_encode() to convert sample format from libaf to mplayer (OSS)
arpi
parents:
8952
diff
changeset
|
73 case AF_FORMAT_A_LAW: return AFMT_A_LAW; |
a6615e7bc710
added af_format_encode() to convert sample format from libaf to mplayer (OSS)
arpi
parents:
8952
diff
changeset
|
74 case AF_FORMAT_MPEG2: return AFMT_MPEG; |
a6615e7bc710
added af_format_encode() to convert sample format from libaf to mplayer (OSS)
arpi
parents:
8952
diff
changeset
|
75 case AF_FORMAT_AC3: return AFMT_AC3; |
a6615e7bc710
added af_format_encode() to convert sample format from libaf to mplayer (OSS)
arpi
parents:
8952
diff
changeset
|
76 case AF_FORMAT_IMA_ADPCM: return AFMT_IMA_ADPCM; |
a6615e7bc710
added af_format_encode() to convert sample format from libaf to mplayer (OSS)
arpi
parents:
8952
diff
changeset
|
77 } |
a6615e7bc710
added af_format_encode() to convert sample format from libaf to mplayer (OSS)
arpi
parents:
8952
diff
changeset
|
78 return AFMT_S16_LE; // shouldn't happen |
a6615e7bc710
added af_format_encode() to convert sample format from libaf to mplayer (OSS)
arpi
parents:
8952
diff
changeset
|
79 } |
a6615e7bc710
added af_format_encode() to convert sample format from libaf to mplayer (OSS)
arpi
parents:
8952
diff
changeset
|
80 |