diff -r 000000000000 -r 6474c204b198 netwerk/protocol/rtsp/controller/RtspMetaData.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/netwerk/protocol/rtsp/controller/RtspMetaData.cpp Wed Dec 31 06:09:35 2014 +0100 @@ -0,0 +1,249 @@ +/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* vim: set sw=2 ts=8 et tw=80 : */ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +#include "RtspMetaData.h" +#include "prlog.h" + +using namespace mozilla; + +namespace mozilla { +namespace net { + +NS_IMPL_ISUPPORTS(RtspMetaData, nsIStreamingProtocolMetaData) + +RtspMetaData::RtspMetaData() + : mIndex(0) + , mWidth(0) + , mHeight(0) + , mDuration(0) + , mSampleRate(0) + , mCurrentTimeStamp(0) + , mChannelCount(0) +{ + mMimeType.AssignLiteral("NONE"); +} + +RtspMetaData::~RtspMetaData() +{ + +} + +nsresult +RtspMetaData::DeserializeRtspMetaData(const InfallibleTArray& metaArray) +{ + nsresult rv; + + // Deserialize meta data. + for (uint32_t i = 0; i < metaArray.Length(); i++) { + const RtspMetaValue& value = metaArray[i].value(); + const nsCString& name = metaArray[i].name(); + + if (name.EqualsLiteral("FRAMETYPE")) { + rv = SetFrameType(value); + NS_ENSURE_SUCCESS(rv, NS_ERROR_FAILURE); + } else if (name.EqualsLiteral("TIMESTAMP")) { + rv = SetTimeStamp(value); + NS_ENSURE_SUCCESS(rv, NS_ERROR_FAILURE); + } else if (name.EqualsLiteral("TRACKS")) { + rv = SetTotalTracks(value); + NS_ENSURE_SUCCESS(rv, NS_ERROR_FAILURE); + } else if(name.EqualsLiteral("MIMETYPE")) { + rv = SetMimeType(value); + NS_ENSURE_SUCCESS(rv, NS_ERROR_FAILURE); + } else if (name.EqualsLiteral("WIDTH")) { + rv = SetWidth(value); + NS_ENSURE_SUCCESS(rv, NS_ERROR_FAILURE); + } else if (name.EqualsLiteral("HEIGHT")) { + rv = SetHeight(value); + NS_ENSURE_SUCCESS(rv, NS_ERROR_FAILURE); + } else if (name.EqualsLiteral("SAMPLERATE")) { + rv = SetSampleRate(value); + NS_ENSURE_SUCCESS(rv, NS_ERROR_FAILURE); + } else if(name.EqualsLiteral("DURATION")) { + rv = SetDuration(value); + NS_ENSURE_SUCCESS(rv, NS_ERROR_FAILURE); + } else if (name.EqualsLiteral("CHANNELCOUNT")) { + rv = SetChannelCount(value); + NS_ENSURE_SUCCESS(rv, NS_ERROR_FAILURE); + } else if (name.EqualsLiteral("ESDS")) { + rv = SetEsdsData(value); + NS_ENSURE_SUCCESS(rv, NS_ERROR_FAILURE); + } else if (name.EqualsLiteral("AVCC")) { + rv = SetAvccData(value); + NS_ENSURE_SUCCESS(rv, NS_ERROR_FAILURE); + } + } + + return NS_OK; +} + +NS_IMETHODIMP +RtspMetaData::GetFrameType(uint32_t *aFrameType) +{ + NS_ENSURE_ARG_POINTER(aFrameType); + *aFrameType = mFrameType; + return NS_OK; +} + +NS_IMETHODIMP +RtspMetaData::SetFrameType(uint32_t aFrameType) +{ + mFrameType = aFrameType; + return NS_OK; +} + +NS_IMETHODIMP +RtspMetaData::GetTotalTracks(uint32_t *aTracks) +{ + NS_ENSURE_ARG_POINTER(aTracks); + *aTracks = mTotalTracks; + return NS_OK; +} + +NS_IMETHODIMP +RtspMetaData::SetTotalTracks(uint32_t aTracks) +{ + mTotalTracks = aTracks; + return NS_OK; +} + +NS_IMETHODIMP +RtspMetaData::GetMimeType(nsACString & aMimeType) +{ + aMimeType.Assign(mMimeType); + return NS_OK; +} + +NS_IMETHODIMP +RtspMetaData::SetMimeType(const nsACString & aMimeType) +{ + mMimeType.Assign(aMimeType); + return NS_OK; +} + +NS_IMETHODIMP +RtspMetaData::GetWidth(uint32_t *aWidth) +{ + NS_ENSURE_ARG_POINTER(aWidth); + *aWidth = mWidth; + return NS_OK; +} + +NS_IMETHODIMP +RtspMetaData::SetWidth(uint32_t aWidth) +{ + mWidth = aWidth; + return NS_OK; +} + +/* attribute unsigned long height; */ +NS_IMETHODIMP +RtspMetaData::GetHeight(uint32_t *aHeight) +{ + NS_ENSURE_ARG_POINTER(aHeight); + *aHeight = mHeight; + return NS_OK; +} + +NS_IMETHODIMP +RtspMetaData::SetHeight(uint32_t aHeight) +{ + mHeight = aHeight; + return NS_OK; +} + +/* attribute unsigned long long duration; */ +NS_IMETHODIMP +RtspMetaData::GetDuration(uint64_t *aDuration) +{ + NS_ENSURE_ARG_POINTER(aDuration); + *aDuration = mDuration; + return NS_OK; +} + +NS_IMETHODIMP +RtspMetaData::SetDuration(uint64_t aDuration) +{ + mDuration = aDuration; + return NS_OK; +} + +/* attribute unsigned long sampleRate; */ +NS_IMETHODIMP +RtspMetaData::GetSampleRate(uint32_t *aSampleRate) +{ + NS_ENSURE_ARG_POINTER(aSampleRate); + *aSampleRate = mSampleRate; + return NS_OK; +} + +NS_IMETHODIMP +RtspMetaData::SetSampleRate(uint32_t aSampleRate) +{ + mSampleRate = aSampleRate; + return NS_OK; +} + +NS_IMETHODIMP +RtspMetaData::GetTimeStamp(uint64_t *aTimeStamp) +{ + NS_ENSURE_ARG_POINTER(aTimeStamp); + *aTimeStamp = mCurrentTimeStamp; + return NS_OK; +} + +NS_IMETHODIMP +RtspMetaData::SetTimeStamp(uint64_t aTimeStamp) +{ + mCurrentTimeStamp = aTimeStamp; + return NS_OK; +} + +NS_IMETHODIMP +RtspMetaData::GetChannelCount(uint32_t *aChannelCount) +{ + NS_ENSURE_ARG_POINTER(aChannelCount); + *aChannelCount = mChannelCount; + return NS_OK; +} + +NS_IMETHODIMP +RtspMetaData::SetChannelCount(uint32_t aChannelCount) +{ + mChannelCount = aChannelCount; + return NS_OK; +} + +NS_IMETHODIMP +RtspMetaData::GetEsdsData(nsACString & aESDS) +{ + aESDS.Assign(mESDS); + return NS_OK; +} + +NS_IMETHODIMP +RtspMetaData::SetEsdsData(const nsACString & aESDS) +{ + mESDS.Assign(aESDS); + return NS_OK; +} + +NS_IMETHODIMP +RtspMetaData::GetAvccData(nsACString & aAVCC) +{ + aAVCC.Assign(mAVCC); + return NS_OK; +} + +NS_IMETHODIMP +RtspMetaData::SetAvccData(const nsACString & aAVCC) +{ + mAVCC.Assign(aAVCC); + return NS_OK; +} + +} // namespace mozilla::net +} // namespace mozilla