summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarcoen Hirschberg <m.hirschberg@activevideo.com>2014-05-27 08:21:18 +0200
committerwm4 <wm4@nowhere>2014-05-28 21:38:00 +0200
commit31a10f7c38887294af758d21a19596b7772f328a (patch)
tree545cd862c7bd4cc6c916e91f5a4d69fa586170be
parent434242adb5dc045faf16f8bb19aa740732cc3345 (diff)
downloadmpv-31a10f7c38887294af758d21a19596b7772f328a.tar.bz2
mpv-31a10f7c38887294af758d21a19596b7772f328a.tar.xz
af_fmt2bits: change to af_fmt2bps (bytes/sample) where appropriate
In most places where af_fmt2bits is called to get the bits/sample, the result is immediately converted to bytes/sample. Avoid this by getting bytes/sample directly by introducing af_fmt2bps.
-rw-r--r--audio/audio.c2
-rw-r--r--audio/audio.h2
-rw-r--r--audio/decode/ad_mpg123.c2
-rw-r--r--audio/format.c21
-rw-r--r--audio/format.h1
-rw-r--r--audio/out/ao.c2
-rw-r--r--audio/out/ao_dsound.c8
-rw-r--r--audio/out/ao_lavc.c2
-rw-r--r--audio/out/ao_oss.c2
-rw-r--r--audio/out/ao_pcm.c2
-rw-r--r--audio/out/ao_portaudio.c2
-rw-r--r--demux/demux_raw.c2
-rw-r--r--stream/tv.c2
13 files changed, 28 insertions, 22 deletions
diff --git a/audio/audio.c b/audio/audio.c
index 57096eaa38..8589104137 100644
--- a/audio/audio.c
+++ b/audio/audio.c
@@ -31,7 +31,7 @@ static void update_redundant_info(struct mp_audio *mpa)
assert(mp_chmap_is_empty(&mpa->channels) ||
mp_chmap_is_valid(&mpa->channels));
mpa->nch = mpa->channels.num;
- mpa->bps = af_fmt2bits(mpa->format) / 8;
+ mpa->bps = af_fmt2bps(mpa->format);
if (af_fmt_is_planar(mpa->format)) {
mpa->spf = 1;
mpa->num_planes = mpa->nch;
diff --git a/audio/audio.h b/audio/audio.h
index 8dbdc4e710..2fe4da92b1 100644
--- a/audio/audio.h
+++ b/audio/audio.h
@@ -35,7 +35,7 @@ struct mp_audio {
int nch; // number of channels (redundant with chmap)
int spf; // sub-samples per sample on each plane
int num_planes; // number of planes
- int bps; // size of sub-samples (af_fmt2bits(format) / 8)
+ int bps; // size of sub-samples (af_fmt2bps(format))
// private
int allocated[MP_NUM_CHANNELS]; // use mp_audio_get_allocated_size()
diff --git a/audio/decode/ad_mpg123.c b/audio/decode/ad_mpg123.c
index 7b174aa0d6..ec4dc04485 100644
--- a/audio/decode/ad_mpg123.c
+++ b/audio/decode/ad_mpg123.c
@@ -160,7 +160,7 @@ static int set_format(struct dec_audio *da)
return MPG123_ERR;
}
mp_audio_set_format(&da->decoded, af);
- con->sample_size = channels * (af_fmt2bits(af) / 8);
+ con->sample_size = channels * af_fmt2bps(af);
con->new_format = 0;
}
return ret;
diff --git a/audio/format.c b/audio/format.c
index e343ca36db..9b14fd167b 100644
--- a/audio/format.c
+++ b/audio/format.c
@@ -28,21 +28,26 @@
#include "common/common.h"
#include "audio/filter/af.h"
-int af_fmt2bits(int format)
+int af_fmt2bps(int format)
{
- if (AF_FORMAT_IS_AC3(format)) return 16;
+ if (AF_FORMAT_IS_AC3(format)) return 2;
if (format == AF_FORMAT_UNKNOWN)
return 0;
switch (format & AF_FORMAT_BITS_MASK) {
- case AF_FORMAT_8BIT: return 8;
- case AF_FORMAT_16BIT: return 16;
- case AF_FORMAT_24BIT: return 24;
- case AF_FORMAT_32BIT: return 32;
- case AF_FORMAT_64BIT: return 64;
+ case AF_FORMAT_8BIT: return 1;
+ case AF_FORMAT_16BIT: return 2;
+ case AF_FORMAT_24BIT: return 3;
+ case AF_FORMAT_32BIT: return 4;
+ case AF_FORMAT_64BIT: return 8;
}
return 0;
}
+int af_fmt2bits(int format)
+{
+ return af_fmt2bps(format) * 8;
+}
+
static int bits_to_mask(int bits)
{
switch (bits) {
@@ -159,7 +164,7 @@ const char *af_fmt_to_str(int format)
int af_fmt_seconds_to_bytes(int format, float seconds, int channels, int samplerate)
{
assert(!af_fmt_is_planar(format));
- int bps = (af_fmt2bits(format) / 8);
+ int bps = af_fmt2bps(format);
int framelen = channels * bps;
int bytes = seconds * bps * samplerate;
if (bytes % framelen)
diff --git a/audio/format.h b/audio/format.h
index 6fcf923624..6821f27ab6 100644
--- a/audio/format.h
+++ b/audio/format.h
@@ -151,6 +151,7 @@ extern const struct af_fmt_entry af_fmtstr_table[];
int af_str2fmt_short(bstr str);
const char *af_fmt_to_str(int format);
+int af_fmt2bps(int format);
int af_fmt2bits(int format);
int af_fmt_change_bits(int format, int bits);
diff --git a/audio/out/ao.c b/audio/out/ao.c
index 313f4f7554..358762b73c 100644
--- a/audio/out/ao.c
+++ b/audio/out/ao.c
@@ -171,7 +171,7 @@ static struct ao *ao_create(bool probing, struct mpv_global *global,
if (ao->driver->init(ao) < 0)
goto error;
- ao->sstride = af_fmt2bits(ao->format) / 8;
+ ao->sstride = af_fmt2bps(ao->format);
ao->num_planes = 1;
if (af_fmt_is_planar(ao->format)) {
ao->num_planes = ao->channels.num;
diff --git a/audio/out/ao_dsound.c b/audio/out/ao_dsound.c
index da0c14cdc2..e8d37e48f7 100644
--- a/audio/out/ao_dsound.c
+++ b/audio/out/ao_dsound.c
@@ -402,7 +402,7 @@ static int init(struct ao *ao)
//set our audio parameters
ao->samplerate = rate;
ao->format = format;
- ao->bps = ao->channels.num * rate * (af_fmt2bits(format) >> 3);
+ ao->bps = ao->channels.num * rate * af_fmt2bps(format);
int buffersize = ao->bps; // space for 1 sec
MP_VERBOSE(ao, "Samplerate:%iHz Channels:%i Format:%s\n", rate,
ao->channels.num, af_fmt_to_str(format));
@@ -422,9 +422,9 @@ static int init(struct ao *ao)
} else {
wformat.Format.wFormatTag = (ao->channels.num > 2)
? WAVE_FORMAT_EXTENSIBLE : WAVE_FORMAT_PCM;
- wformat.Format.wBitsPerSample = af_fmt2bits(format);
- wformat.Format.nBlockAlign = wformat.Format.nChannels *
- (wformat.Format.wBitsPerSample >> 3);
+ int bps = af_fmt2bps(format);
+ wformat.Format.wBitsPerSample = bps * 8;
+ wformat.Format.nBlockAlign = wformat.Format.nChannels * bps;
}
// fill in primary sound buffer descriptor
diff --git a/audio/out/ao_lavc.c b/audio/out/ao_lavc.c
index 0bfe2eb9cb..7eb81f1d4e 100644
--- a/audio/out/ao_lavc.c
+++ b/audio/out/ao_lavc.c
@@ -137,7 +137,7 @@ static int init(struct ao *ao)
select_format(ao, codec);
- ac->sample_size = af_fmt2bits(ao->format) / 8;
+ ac->sample_size = af_fmt2bps(ao->format);
ac->stream->codec->sample_fmt = af_to_avformat(ao->format);
ac->stream->codec->bits_per_raw_sample = ac->sample_size * 8;
diff --git a/audio/out/ao_oss.c b/audio/out/ao_oss.c
index ca7539b590..545ddca3f8 100644
--- a/audio/out/ao_oss.c
+++ b/audio/out/ao_oss.c
@@ -419,7 +419,7 @@ ac3_retry:
#endif
}
- ao->bps = ao->channels.num * (af_fmt2bits(ao->format) / 8);
+ ao->bps = ao->channels.num * af_fmt2bps(ao->format);
p->outburst -= p->outburst % ao->bps; // round down
ao->bps *= ao->samplerate;
diff --git a/audio/out/ao_pcm.c b/audio/out/ao_pcm.c
index ab5faf6173..1e8a0adf75 100644
--- a/audio/out/ao_pcm.c
+++ b/audio/out/ao_pcm.c
@@ -143,7 +143,7 @@ static int init(struct ao *ao)
if (!ao_chmap_sel_adjust(ao, &sel, &ao->channels))
return -1;
- ao->bps = ao->channels.num * ao->samplerate * (af_fmt2bits(ao->format) / 8);
+ ao->bps = ao->channels.num * ao->samplerate * af_fmt2bps(ao->format);
MP_INFO(ao, "File: %s (%s)\nPCM: Samplerate: %d Hz Channels: %d Format: %s\n",
priv->outputfilename,
diff --git a/audio/out/ao_portaudio.c b/audio/out/ao_portaudio.c
index ae8b76e830..52c67d2a3c 100644
--- a/audio/out/ao_portaudio.c
+++ b/audio/out/ao_portaudio.c
@@ -204,7 +204,7 @@ static int init(struct ao *ao)
ao->format = fmt->mp_format;
sp.sampleFormat = fmt->pa_format;
- int framelen = ao->channels.num * (af_fmt2bits(ao->format) / 8);
+ int framelen = ao->channels.num * af_fmt2bps(ao->format);
ao->bps = ao->samplerate * framelen;
if (!CHECK_PA_RET(Pa_IsFormatSupported(NULL, &sp, ao->samplerate)))
diff --git a/demux/demux_raw.c b/demux/demux_raw.c
index c2579ab536..a17fad795c 100644
--- a/demux/demux_raw.c
+++ b/demux/demux_raw.c
@@ -94,7 +94,7 @@ static int demux_rawaudio_open(demuxer_t *demuxer, enum demux_check check)
sh_audio->channels = channels;
w->nChannels = sh_audio->channels.num;
w->nSamplesPerSec = sh_audio->samplerate = samplerate;
- int samplesize = (af_fmt2bits(aformat) + 7) / 8;
+ int samplesize = af_fmt2bps(aformat);
w->nAvgBytesPerSec = samplerate * samplesize * w->nChannels;
w->nBlockAlign = w->nChannels * samplesize;
w->wBitsPerSample = 8 * samplesize;
diff --git a/stream/tv.c b/stream/tv.c
index 77279e4bcd..c7017f4471 100644
--- a/stream/tv.c
+++ b/stream/tv.c
@@ -802,7 +802,7 @@ static int demux_open_tv(demuxer_t *demuxer, enum demux_check check)
sh_a->codec = "mp-pcm";
sh_a->format = audio_format;
- int samplesize = af_fmt2bits(audio_format) / 8;
+ int samplesize = af_fmt2bps(audio_format);
int block_align = samplesize * sh_audio->channels.num;
int bytes_per_second = sh_audio->samplerate * block_align;