[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Gnash-commit] /srv/bzr/gnash/rtmp r9655: use shared_ptrs for headers an
From: |
rob |
Subject: |
[Gnash-commit] /srv/bzr/gnash/rtmp r9655: use shared_ptrs for headers and tags |
Date: |
Mon, 22 Sep 2008 09:11:10 -0600 |
User-agent: |
Bazaar (1.5) |
------------------------------------------------------------
revno: 9655
committer: address@hidden
branch nick: rtmp
timestamp: Mon 2008-09-22 09:11:10 -0600
message:
use shared_ptrs for headers and tags
modified:
libamf/flv.cpp
libamf/flv.h
=== modified file 'libamf/flv.cpp'
--- a/libamf/flv.cpp 2008-09-22 01:03:07 +0000
+++ b/libamf/flv.cpp 2008-09-22 15:11:10 +0000
@@ -86,37 +86,39 @@
}
// Decode a Buffer into a header
-Flv::flv_header_t *
+boost::shared_ptr<Flv::flv_header_t>
Flv::decodeHeader(boost::shared_ptr<amf::Buffer> buf)
{
// GNASH_REPORT_FUNCTION;
- memcpy(&_header, buf->begin(), sizeof(Flv::flv_header_t));
+ boost::shared_ptr<flv_header_t> header(new flv_header_t);
+
+ memcpy(header->reference(), buf->begin(), sizeof(Flv::flv_header_t));
// test the magic number
- if (memcmp(_header.sig, "FLV", 3) != 0) {
+ if (memcmp(header->sig, "FLV", 3) != 0) {
log_error("Bad magic number for FLV file!");
return 0;
}
// Make sure the version is legit, it should alwys be 1
- if (_header.version != 0x1) {
+ if (header->version != 0x1) {
log_error("Bad version in FLV header! %d", _header.version);
return 0;
}
// Make sure the type is set correctly
- if (((_header.type & Flv::FLV_AUDIO) && (_header.type & Flv::FLV_VIDEO))
- || (_header.type & Flv::FLV_AUDIO) || (_header.type & Flv::FLV_VIDEO)) {
+ if (((header->type & Flv::FLV_AUDIO) && (header->type & Flv::FLV_VIDEO))
+ || (header->type & Flv::FLV_AUDIO) || (header->type & Flv::FLV_VIDEO)) {
} else {
- log_error("Bad FLV file Type: %d", _header.type);
+ log_error("Bad FLV file Type: %d", header->type);
}
// Be lazy, as head_size is an array of 4 bytes, and not an integer in the
data
// structure. This is to get around possible padding done to the data
structure
// done by some compilers.
- boost::uint32_t size = *(reinterpret_cast<boost::uint32_t
*>(_header.head_size));
+ boost::uint32_t size = *(reinterpret_cast<boost::uint32_t
*>(header->head_size));
// The header size is big endian
- swapBytes(_header.head_size, sizeof(boost::uint32_t));
+ swapBytes(header->head_size, sizeof(boost::uint32_t));
// The header size is always 9, guess it could change some day in the far
future, so
// we should use it.
@@ -125,7 +127,7 @@
return 0;
}
- return &_header;
+ return header;
}
// Decode a MetaData object, which is after the header, but before all the tags
@@ -169,12 +171,12 @@
return el;
}
-Flv::flv_audio_t *
+boost::shared_ptr<Flv::flv_audio_t>
Flv::decodeAudioData(gnash::Network::byte_t byte)
{
// GNASH_REPORT_FUNCTION;
- flv_audio_t *audio = new flv_audio_t;
- memset(audio, 0, sizeof(flv_audio_t));
+ boost::shared_ptr<flv_audio_t> audio(new flv_audio_t);
+ memset(audio->reference(), 0, sizeof(flv_audio_t));
// Get the sound type
if (byte && Flv::AUDIO_STEREO) {
@@ -228,11 +230,11 @@
return audio;
}
-Flv::flv_video_t *
+boost::shared_ptr<Flv::flv_video_t>
Flv::decodeVideoData(gnash::Network::byte_t byte)
{
// GNASH_REPORT_FUNCTION;
- flv_video_t *video = new flv_video_t;
+ boost::shared_ptr<flv_video_t> video(new flv_video_t);
memset(video, 0, sizeof(flv_video_t));
// Get the codecID codecID
@@ -286,11 +288,11 @@
}
// Decode the tag header
-Flv::flv_tag_t *
+boost::shared_ptr<Flv::flv_tag_t>
Flv::decodeTagHeader(boost::shared_ptr<amf::Buffer> buf)
{
// GNASH_REPORT_FUNCTION;
- flv_tag_t *tag = new flv_tag_t;
+ boost::shared_ptr<flv_tag_t> tag(new flv_tag_t);
memcpy(tag, buf->reference(), sizeof(flv_tag_t));
// These fields are all 24 bit, big endian integers
=== modified file 'libamf/flv.h'
--- a/libamf/flv.h 2008-09-22 01:03:07 +0000
+++ b/libamf/flv.h 2008-09-22 15:11:10 +0000
@@ -131,11 +131,11 @@
// Decode a MetaData object, which is after the header, but before all the
tags
amf::Element *decodeMetaData(boost::shared_ptr<amf::Buffer> buf);
amf::Element *decodeMetaData(gnash::Network::byte_t *buf, size_t size);
- flv_audio_t *decodeAudioData(gnash::Network::byte_t flags);
- flv_video_t *decodeVideoData(gnash::Network::byte_t flags);
+ boost::shared_ptr<flv_audio_t> decodeAudioData(gnash::Network::byte_t
flags);
+ boost::shared_ptr<flv_video_t> decodeVideoData(gnash::Network::byte_t
flags);
// Decode the tag header
- flv_tag_t *decodeTagHeader(boost::shared_ptr<amf::Buffer> buf);
+ boost::shared_ptr<flv_tag_t>
decodeTagHeader(boost::shared_ptr<amf::Buffer> buf);
amf::Element *findProperty(const std::string &name);
void setProperties(std::vector<amf::Element *> x) { _properties = x; };
@@ -145,7 +145,7 @@
void dump();
private:
- flv_header_t _header;
+// flv_header_t _header;
// boost::uint32_t _previous_tag_size;
flv_tag_t _tag;
std::vector<amf::Element *> _properties;
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Gnash-commit] /srv/bzr/gnash/rtmp r9655: use shared_ptrs for headers and tags,
rob <=