enum AVCodecID ff_codec_get_id(const AVCodecTag *tags, unsigned int tag);
+ /**
+ * Select a PCM codec based on the given parameters.
+ *
+ * @param bps bits-per-sample
+ * @param flt floating-point
+ * @param be big-endian
+ * @param sflags signed flags. each bit corresponds to one byte of bit depth.
+ * e.g. the 1st bit indicates if 8-bit should be signed or
+ * unsigned, the 2nd bit indicates if 16-bit should be signed or
+ * unsigned, etc... This is useful for formats such as WAVE where
+ * only 8-bit is unsigned and all other bit depths are signed.
+ * @return a PCM codec id or AV_CODEC_ID_NONE
+ */
+ enum AVCodecID ff_get_pcm_codec_id(int bps, int flt, int be, int sflags);
+
+/**
+ * Chooses a timebase for muxing the specified stream.
+ *
+ * The choosen timebase allows sample accurate timestamps based
+ * on the framerate or sample rate for audio streams. It also is
+ * at least as precisse as 1/min_precission would be.
+ */
+AVRational ff_choose_timebase(AVFormatContext *s, AVStream *st, int min_precission);
+
#endif /* AVFORMAT_INTERNAL_H */
return AV_CODEC_ID_NONE;
}
+ enum AVCodecID ff_get_pcm_codec_id(int bps, int flt, int be, int sflags)
+ {
+ if (flt) {
+ switch (bps) {
+ case 32: return be ? AV_CODEC_ID_PCM_F32BE : AV_CODEC_ID_PCM_F32LE;
+ case 64: return be ? AV_CODEC_ID_PCM_F64BE : AV_CODEC_ID_PCM_F64LE;
+ default: return AV_CODEC_ID_NONE;
+ }
+ } else {
++ bps += 7;
+ bps >>= 3;
+ if (sflags & (1 << (bps - 1))) {
+ switch (bps) {
+ case 1: return AV_CODEC_ID_PCM_S8;
+ case 2: return be ? AV_CODEC_ID_PCM_S16BE : AV_CODEC_ID_PCM_S16LE;
+ case 3: return be ? AV_CODEC_ID_PCM_S24BE : AV_CODEC_ID_PCM_S24LE;
+ case 4: return be ? AV_CODEC_ID_PCM_S32BE : AV_CODEC_ID_PCM_S32LE;
+ default: return AV_CODEC_ID_NONE;
+ }
+ } else {
+ switch (bps) {
+ case 1: return AV_CODEC_ID_PCM_U8;
+ case 2: return be ? AV_CODEC_ID_PCM_U16BE : AV_CODEC_ID_PCM_U16LE;
+ case 3: return be ? AV_CODEC_ID_PCM_U24BE : AV_CODEC_ID_PCM_U24LE;
+ case 4: return be ? AV_CODEC_ID_PCM_U32BE : AV_CODEC_ID_PCM_U32LE;
+ default: return AV_CODEC_ID_NONE;
+ }
+ }
+ }
+ }
+
unsigned int av_codec_get_tag(const AVCodecTag * const *tags, enum AVCodecID id)
{
int i;