Mercurial > pt1.oyama
diff libdlna-0.2.3/src/profiles.h @ 129:4f6d9621ee00
add multi session streaming & add depending librarys.
- libupnp-1.6.6
- libdlna-0.2.3
author | Naoya OYAMA <naoya.oyama@gmail.com> |
---|---|
date | Sun, 10 Oct 2010 15:33:18 +0900 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/libdlna-0.2.3/src/profiles.h Sun Oct 10 15:33:18 2010 +0900 @@ -0,0 +1,151 @@ +/* + * libdlna: reference DLNA standards implementation. + * Copyright (C) 2007 Benjamin Zores <ben@geexbox.org> + * + * This file is part of libdlna. + * + * libdlna is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * libdlna is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with libdlna; if not, write to the Free Software + * Foundation, Inc, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef _PROFILES_H_ +#define _PROFILES_H_ + +#include <ffmpeg/avcodec.h> +#include <ffmpeg/avformat.h> + +#include "dlna_internals.h" +#include "containers.h" + +/* DLNA MIME types */ +#define MIME_IMAGE_JPEG "image/jpeg" +#define MIME_IMAGE_PNG "image/png" + +#define MIME_AUDIO_3GP "audio/3gpp" +#define MIME_AUDIO_ADTS "audio/vnd.dlna.adts" +#define MIME_AUDIO_ATRAC "audio/x-sony-oma" +#define MIME_AUDIO_DOLBY_DIGITAL "audio/vnd.dolby.dd-raw" +#define MIME_AUDIO_LPCM "audio/L16" +#define MIME_AUDIO_MPEG "audio/mpeg" +#define MIME_AUDIO_MPEG_4 "audio/mp4" +#define MIME_AUDIO_WMA "audio/x-ms-wma" + +#define MIME_VIDEO_3GP "video/3gpp" +#define MIME_VIDEO_ASF "video/x-ms-asf" +#define MIME_VIDEO_MPEG "video/mpeg" +#define MIME_VIDEO_MPEG_4 "video/mp4" +#define MIME_VIDEO_MPEG_TS "video/vnd.dlna.mpeg-tts" +#define MIME_VIDEO_WMV "video/x-ms-wmv" + +/* DLNA Labels */ +#define LABEL_IMAGE_PICTURE "picture" +#define LABEL_IMAGE_ICON "icon" + +#define LABEL_AUDIO_MONO "mono" +#define LABEL_AUDIO_2CH "2-ch" +#define LABEL_AUDIO_2CH_MULTI "2-ch multi" +#define LABEL_AUDIO_MULTI "multi" + +#define LABEL_VIDEO_CIF15 "CIF15" +#define LABEL_VIDEO_CIF30 "CIF30" +#define LABEL_VIDEO_QCIF15 "QCIF15" +#define LABEL_VIDEO_SD "SD" +#define LABEL_VIDEO_HD "HD" + +typedef struct av_codecs_s { + /* audio stream and codec */ + AVStream *as; + AVCodecContext *ac; + /* video stream and codec */ + AVStream *vs; + AVCodecContext *vc; +} av_codecs_t; + +typedef struct dlna_registered_profile_s { + dlna_media_profile_t id; + dlna_media_class_t class; + char *extensions; + dlna_profile_t * (*probe) (AVFormatContext *ctx, + dlna_container_type_t st, + av_codecs_t *codecs); + struct dlna_registered_profile_s *next; +} dlna_registered_profile_t; + +char * get_file_extension (const char *filename); + +/* audio profile checks */ + +typedef enum { + AUDIO_PROFILE_INVALID = 0, + + /* Advanced Audio Codec variants */ + AUDIO_PROFILE_AAC, + AUDIO_PROFILE_AAC_320, + AUDIO_PROFILE_AAC_MULT5, + AUDIO_PROFILE_AAC_BSAC, + AUDIO_PROFILE_AAC_BSAC_MULT5, + AUDIO_PROFILE_AAC_HE_L2, + AUDIO_PROFILE_AAC_HE_L2_320, + AUDIO_PROFILE_AAC_HE_L3, + AUDIO_PROFILE_AAC_HE_MULT5, + AUDIO_PROFILE_AAC_HE_V2_L2, + AUDIO_PROFILE_AAC_HE_V2_L2_320, + AUDIO_PROFILE_AAC_HE_V2_L3, + AUDIO_PROFILE_AAC_HE_V2_MULT5, + AUDIO_PROFILE_AAC_LTP, + AUDIO_PROFILE_AAC_LTP_MULT5, + AUDIO_PROFILE_AAC_LTP_MULT7, + + AUDIO_PROFILE_AC3, + AUDIO_PROFILE_AC3_EXTENDED, + + AUDIO_PROFILE_AMR, + AUDIO_PROFILE_AMR_WB, + + AUDIO_PROFILE_ATRAC, + + AUDIO_PROFILE_G726, + + AUDIO_PROFILE_LPCM, + + /* MPEG audio variants */ + AUDIO_PROFILE_MP2, + AUDIO_PROFILE_MP3, + AUDIO_PROFILE_MP3_EXTENDED, + + /* Windows Media Audio variants */ + AUDIO_PROFILE_WMA_BASELINE, + AUDIO_PROFILE_WMA_FULL, + AUDIO_PROFILE_WMA_PRO +} audio_profile_t; + +audio_profile_t audio_profile_guess (AVCodecContext *ac); + +audio_profile_t audio_profile_guess_aac (AVCodecContext *ac); +audio_profile_t audio_profile_guess_ac3 (AVCodecContext *ac); +audio_profile_t audio_profile_guess_amr (AVCodecContext *ac); +audio_profile_t audio_profile_guess_atrac (AVCodecContext *ac); +audio_profile_t audio_profile_guess_g726 (AVCodecContext *ac); +audio_profile_t audio_profile_guess_lpcm (AVCodecContext *ac); +audio_profile_t audio_profile_guess_mp2 (AVCodecContext *ac); +audio_profile_t audio_profile_guess_mp3 (AVCodecContext *ac); +audio_profile_t audio_profile_guess_wma (AVCodecContext *ac); + +/* stream context check routines */ +int stream_ctx_is_image (AVFormatContext *ctx, + av_codecs_t *codecs, dlna_container_type_t st); +int stream_ctx_is_audio (av_codecs_t *codecs); +int stream_ctx_is_av (av_codecs_t *codecs); + +#endif /* _PROFILES_H_ */