1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/netwerk/protocol/rtsp/controller/RtspMetaData.cpp Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,249 @@ 1.4 +/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ 1.5 +/* vim: set sw=2 ts=8 et tw=80 : */ 1.6 +/* This Source Code Form is subject to the terms of the Mozilla Public 1.7 + * License, v. 2.0. If a copy of the MPL was not distributed with this 1.8 + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ 1.9 + 1.10 +#include "RtspMetaData.h" 1.11 +#include "prlog.h" 1.12 + 1.13 +using namespace mozilla; 1.14 + 1.15 +namespace mozilla { 1.16 +namespace net { 1.17 + 1.18 +NS_IMPL_ISUPPORTS(RtspMetaData, nsIStreamingProtocolMetaData) 1.19 + 1.20 +RtspMetaData::RtspMetaData() 1.21 + : mIndex(0) 1.22 + , mWidth(0) 1.23 + , mHeight(0) 1.24 + , mDuration(0) 1.25 + , mSampleRate(0) 1.26 + , mCurrentTimeStamp(0) 1.27 + , mChannelCount(0) 1.28 +{ 1.29 + mMimeType.AssignLiteral("NONE"); 1.30 +} 1.31 + 1.32 +RtspMetaData::~RtspMetaData() 1.33 +{ 1.34 + 1.35 +} 1.36 + 1.37 +nsresult 1.38 +RtspMetaData::DeserializeRtspMetaData(const InfallibleTArray<RtspMetadataParam>& metaArray) 1.39 +{ 1.40 + nsresult rv; 1.41 + 1.42 + // Deserialize meta data. 1.43 + for (uint32_t i = 0; i < metaArray.Length(); i++) { 1.44 + const RtspMetaValue& value = metaArray[i].value(); 1.45 + const nsCString& name = metaArray[i].name(); 1.46 + 1.47 + if (name.EqualsLiteral("FRAMETYPE")) { 1.48 + rv = SetFrameType(value); 1.49 + NS_ENSURE_SUCCESS(rv, NS_ERROR_FAILURE); 1.50 + } else if (name.EqualsLiteral("TIMESTAMP")) { 1.51 + rv = SetTimeStamp(value); 1.52 + NS_ENSURE_SUCCESS(rv, NS_ERROR_FAILURE); 1.53 + } else if (name.EqualsLiteral("TRACKS")) { 1.54 + rv = SetTotalTracks(value); 1.55 + NS_ENSURE_SUCCESS(rv, NS_ERROR_FAILURE); 1.56 + } else if(name.EqualsLiteral("MIMETYPE")) { 1.57 + rv = SetMimeType(value); 1.58 + NS_ENSURE_SUCCESS(rv, NS_ERROR_FAILURE); 1.59 + } else if (name.EqualsLiteral("WIDTH")) { 1.60 + rv = SetWidth(value); 1.61 + NS_ENSURE_SUCCESS(rv, NS_ERROR_FAILURE); 1.62 + } else if (name.EqualsLiteral("HEIGHT")) { 1.63 + rv = SetHeight(value); 1.64 + NS_ENSURE_SUCCESS(rv, NS_ERROR_FAILURE); 1.65 + } else if (name.EqualsLiteral("SAMPLERATE")) { 1.66 + rv = SetSampleRate(value); 1.67 + NS_ENSURE_SUCCESS(rv, NS_ERROR_FAILURE); 1.68 + } else if(name.EqualsLiteral("DURATION")) { 1.69 + rv = SetDuration(value); 1.70 + NS_ENSURE_SUCCESS(rv, NS_ERROR_FAILURE); 1.71 + } else if (name.EqualsLiteral("CHANNELCOUNT")) { 1.72 + rv = SetChannelCount(value); 1.73 + NS_ENSURE_SUCCESS(rv, NS_ERROR_FAILURE); 1.74 + } else if (name.EqualsLiteral("ESDS")) { 1.75 + rv = SetEsdsData(value); 1.76 + NS_ENSURE_SUCCESS(rv, NS_ERROR_FAILURE); 1.77 + } else if (name.EqualsLiteral("AVCC")) { 1.78 + rv = SetAvccData(value); 1.79 + NS_ENSURE_SUCCESS(rv, NS_ERROR_FAILURE); 1.80 + } 1.81 + } 1.82 + 1.83 + return NS_OK; 1.84 +} 1.85 + 1.86 +NS_IMETHODIMP 1.87 +RtspMetaData::GetFrameType(uint32_t *aFrameType) 1.88 +{ 1.89 + NS_ENSURE_ARG_POINTER(aFrameType); 1.90 + *aFrameType = mFrameType; 1.91 + return NS_OK; 1.92 +} 1.93 + 1.94 +NS_IMETHODIMP 1.95 +RtspMetaData::SetFrameType(uint32_t aFrameType) 1.96 +{ 1.97 + mFrameType = aFrameType; 1.98 + return NS_OK; 1.99 +} 1.100 + 1.101 +NS_IMETHODIMP 1.102 +RtspMetaData::GetTotalTracks(uint32_t *aTracks) 1.103 +{ 1.104 + NS_ENSURE_ARG_POINTER(aTracks); 1.105 + *aTracks = mTotalTracks; 1.106 + return NS_OK; 1.107 +} 1.108 + 1.109 +NS_IMETHODIMP 1.110 +RtspMetaData::SetTotalTracks(uint32_t aTracks) 1.111 +{ 1.112 + mTotalTracks = aTracks; 1.113 + return NS_OK; 1.114 +} 1.115 + 1.116 +NS_IMETHODIMP 1.117 +RtspMetaData::GetMimeType(nsACString & aMimeType) 1.118 +{ 1.119 + aMimeType.Assign(mMimeType); 1.120 + return NS_OK; 1.121 +} 1.122 + 1.123 +NS_IMETHODIMP 1.124 +RtspMetaData::SetMimeType(const nsACString & aMimeType) 1.125 +{ 1.126 + mMimeType.Assign(aMimeType); 1.127 + return NS_OK; 1.128 +} 1.129 + 1.130 +NS_IMETHODIMP 1.131 +RtspMetaData::GetWidth(uint32_t *aWidth) 1.132 +{ 1.133 + NS_ENSURE_ARG_POINTER(aWidth); 1.134 + *aWidth = mWidth; 1.135 + return NS_OK; 1.136 +} 1.137 + 1.138 +NS_IMETHODIMP 1.139 +RtspMetaData::SetWidth(uint32_t aWidth) 1.140 +{ 1.141 + mWidth = aWidth; 1.142 + return NS_OK; 1.143 +} 1.144 + 1.145 +/* attribute unsigned long height; */ 1.146 +NS_IMETHODIMP 1.147 +RtspMetaData::GetHeight(uint32_t *aHeight) 1.148 +{ 1.149 + NS_ENSURE_ARG_POINTER(aHeight); 1.150 + *aHeight = mHeight; 1.151 + return NS_OK; 1.152 +} 1.153 + 1.154 +NS_IMETHODIMP 1.155 +RtspMetaData::SetHeight(uint32_t aHeight) 1.156 +{ 1.157 + mHeight = aHeight; 1.158 + return NS_OK; 1.159 +} 1.160 + 1.161 +/* attribute unsigned long long duration; */ 1.162 +NS_IMETHODIMP 1.163 +RtspMetaData::GetDuration(uint64_t *aDuration) 1.164 +{ 1.165 + NS_ENSURE_ARG_POINTER(aDuration); 1.166 + *aDuration = mDuration; 1.167 + return NS_OK; 1.168 +} 1.169 + 1.170 +NS_IMETHODIMP 1.171 +RtspMetaData::SetDuration(uint64_t aDuration) 1.172 +{ 1.173 + mDuration = aDuration; 1.174 + return NS_OK; 1.175 +} 1.176 + 1.177 +/* attribute unsigned long sampleRate; */ 1.178 +NS_IMETHODIMP 1.179 +RtspMetaData::GetSampleRate(uint32_t *aSampleRate) 1.180 +{ 1.181 + NS_ENSURE_ARG_POINTER(aSampleRate); 1.182 + *aSampleRate = mSampleRate; 1.183 + return NS_OK; 1.184 +} 1.185 + 1.186 +NS_IMETHODIMP 1.187 +RtspMetaData::SetSampleRate(uint32_t aSampleRate) 1.188 +{ 1.189 + mSampleRate = aSampleRate; 1.190 + return NS_OK; 1.191 +} 1.192 + 1.193 +NS_IMETHODIMP 1.194 +RtspMetaData::GetTimeStamp(uint64_t *aTimeStamp) 1.195 +{ 1.196 + NS_ENSURE_ARG_POINTER(aTimeStamp); 1.197 + *aTimeStamp = mCurrentTimeStamp; 1.198 + return NS_OK; 1.199 +} 1.200 + 1.201 +NS_IMETHODIMP 1.202 +RtspMetaData::SetTimeStamp(uint64_t aTimeStamp) 1.203 +{ 1.204 + mCurrentTimeStamp = aTimeStamp; 1.205 + return NS_OK; 1.206 +} 1.207 + 1.208 +NS_IMETHODIMP 1.209 +RtspMetaData::GetChannelCount(uint32_t *aChannelCount) 1.210 +{ 1.211 + NS_ENSURE_ARG_POINTER(aChannelCount); 1.212 + *aChannelCount = mChannelCount; 1.213 + return NS_OK; 1.214 +} 1.215 + 1.216 +NS_IMETHODIMP 1.217 +RtspMetaData::SetChannelCount(uint32_t aChannelCount) 1.218 +{ 1.219 + mChannelCount = aChannelCount; 1.220 + return NS_OK; 1.221 +} 1.222 + 1.223 +NS_IMETHODIMP 1.224 +RtspMetaData::GetEsdsData(nsACString & aESDS) 1.225 +{ 1.226 + aESDS.Assign(mESDS); 1.227 + return NS_OK; 1.228 +} 1.229 + 1.230 +NS_IMETHODIMP 1.231 +RtspMetaData::SetEsdsData(const nsACString & aESDS) 1.232 +{ 1.233 + mESDS.Assign(aESDS); 1.234 + return NS_OK; 1.235 +} 1.236 + 1.237 +NS_IMETHODIMP 1.238 +RtspMetaData::GetAvccData(nsACString & aAVCC) 1.239 +{ 1.240 + aAVCC.Assign(mAVCC); 1.241 + return NS_OK; 1.242 +} 1.243 + 1.244 +NS_IMETHODIMP 1.245 +RtspMetaData::SetAvccData(const nsACString & aAVCC) 1.246 +{ 1.247 + mAVCC.Assign(aAVCC); 1.248 + return NS_OK; 1.249 +} 1.250 + 1.251 +} // namespace mozilla::net 1.252 +} // namespace mozilla