/*************************************************************************************** * * IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. * * By downloading, copying, installing or using the software you agree to this license. * If you do not agree to this license, do not download, install, * copy or use the software. * * Copyright (C) 2014-2024, Happytimesoft Corporation, all rights reserved. * * Redistribution and use in binary forms, with or without modification, are permitted. * * Unless required by applicable law or agreed to in writing, software distributed * under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific * language governing permissions and limitations under the License. * ****************************************************************************************/ #include "media_codec.h" #include "media_format.h" AVCodecID to_audio_avcodecid(int codec) { AVCodecID codecid = AV_CODEC_ID_NONE; switch (codec) { case AUDIO_CODEC_G711A: codecid = AV_CODEC_ID_PCM_ALAW; break; case AUDIO_CODEC_G711U: codecid = AV_CODEC_ID_PCM_MULAW; break; case AUDIO_CODEC_G726: codecid = AV_CODEC_ID_ADPCM_G726; break; case AUDIO_CODEC_G722: codecid = AV_CODEC_ID_ADPCM_G722; break; case AUDIO_CODEC_OPUS: codecid = AV_CODEC_ID_OPUS; break; case AUDIO_CODEC_AAC: codecid = AV_CODEC_ID_AAC; break; } return codecid; } AVCodecID to_video_avcodecid(int codec) { AVCodecID codecid = AV_CODEC_ID_NONE; switch (codec) { case VIDEO_CODEC_H264: codecid = AV_CODEC_ID_H264; break; case VIDEO_CODEC_H265: codecid = AV_CODEC_ID_HEVC; break; case VIDEO_CODEC_MP4: codecid = AV_CODEC_ID_MPEG4; break; case VIDEO_CODEC_JPEG: codecid = AV_CODEC_ID_MJPEG; break; } return codecid; } int to_audio_codec(AVCodecID codecid) { int codec = AUDIO_CODEC_NONE; switch (codecid) { case AV_CODEC_ID_PCM_ALAW: codec = AUDIO_CODEC_G711A; break; case AV_CODEC_ID_PCM_MULAW: codec = AUDIO_CODEC_G711U; break; case AV_CODEC_ID_ADPCM_G726: codec = AUDIO_CODEC_G726; break; case AV_CODEC_ID_ADPCM_G722: codec = AUDIO_CODEC_G722; break; case AV_CODEC_ID_OPUS: codec = AUDIO_CODEC_OPUS; break; case AV_CODEC_ID_AAC: codec = AUDIO_CODEC_AAC; break; default: break; } return codec; } int to_video_codec(AVCodecID codecid) { int codec = VIDEO_CODEC_NONE; switch (codecid) { case AV_CODEC_ID_H264: codec = VIDEO_CODEC_H264; break; case AV_CODEC_ID_HEVC: codec = VIDEO_CODEC_H265; break; case AV_CODEC_ID_MPEG4: codec = VIDEO_CODEC_MP4; break; case AV_CODEC_ID_MJPEG: codec = VIDEO_CODEC_JPEG; break; default: break; } return codec; } AVPixelFormat to_avpixelformat(int fmt) { AVPixelFormat pixfmt = AV_PIX_FMT_NONE; if (VIDEO_FMT_BGR24 == fmt) { pixfmt = AV_PIX_FMT_BGR24; } else if (VIDEO_FMT_YUV420P == fmt) { pixfmt = AV_PIX_FMT_YUV420P; } else if (VIDEO_FMT_YUYV422 == fmt) { pixfmt = AV_PIX_FMT_YUYV422; } else if (VIDEO_FMT_YVYU422 == fmt) { pixfmt = AV_PIX_FMT_YVYU422; } else if (VIDEO_FMT_UYVY422 == fmt) { pixfmt = AV_PIX_FMT_UYVY422; } else if (VIDEO_FMT_NV12 == fmt) { pixfmt = AV_PIX_FMT_NV12; } else if (VIDEO_FMT_NV21 == fmt) { pixfmt = AV_PIX_FMT_NV21; } else if (VIDEO_FMT_RGB24 == fmt) { pixfmt = AV_PIX_FMT_RGB24; } else if (VIDEO_FMT_RGB32 == fmt) { pixfmt = AV_PIX_FMT_RGB32; } else if (VIDEO_FMT_ARGB == fmt) { pixfmt = AV_PIX_FMT_ARGB; } else if (VIDEO_FMT_BGRA == fmt) { pixfmt = AV_PIX_FMT_BGRA; } else if (VIDEO_FMT_YV12 == fmt) { pixfmt = AV_PIX_FMT_YUV420P; } else if (VIDEO_FMT_BGR32 == fmt) { pixfmt = AV_PIX_FMT_BGR32; } else if (VIDEO_FMT_YUV422P == fmt) { pixfmt = AV_PIX_FMT_YUV422P; } return pixfmt; }