Code style cleanup / honored 80 column line length limit. Modified FireWireDVAddOn to use BObjectList.

Feel free to chime in if I missed any style violations.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28000 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Rene Gollent
2008-10-12 18:15:54 +00:00
parent 5222f12a32
commit d0da34f00f
7 changed files with 278 additions and 253 deletions
@@ -6,6 +6,8 @@
*
*/
#include "FireWireCard.h"
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
@@ -16,7 +18,6 @@
#include <stdint.h>
#include <errno.h>
#include "FireWireCard.h"
#include "glue.h"
#define TAG (1<<6)
@@ -79,11 +80,11 @@ struct mpeg_pldt {
#define MPEG_RBUFSIZE (MPEG_PSIZE * MPEG_NPACKET_R)
FireWireCard::FireWireCard(const char *path)
: fInitStatus(B_OK)
, fDev(-1)
, fBuf(NULL)
, fPad(NULL)
FireWireCard::FireWireCard(const char* path)
: fInitStatus(B_OK),
fDev(-1),
fBuf(NULL),
fPad(NULL)
{
printf("FireWireCard opening %s\n", path);
@@ -111,7 +112,7 @@ FireWireCard::InitCheck()
ssize_t
FireWireCard::Read(void **data)
FireWireCard::Read(void** data)
{
if (fFormat == FMT_MPEGTS)
return MpegtsRead(data);
@@ -121,7 +122,7 @@ FireWireCard::Read(void **data)
status_t
FireWireCard::Extract(void *dest, void **src, ssize_t *sizeUsed)
FireWireCard::Extract(void* dest, void** src, ssize_t* sizeUsed)
{
if (fFormat == FMT_MPEGTS)
return MpegtsExtract(dest, src, sizeUsed);
@@ -131,7 +132,7 @@ FireWireCard::Extract(void *dest, void **src, ssize_t *sizeUsed)
void
FireWireCard::GetBufInfo(size_t *rbufsize, int *rcount)
FireWireCard::GetBufInfo(size_t* rbufsize, int* rcount)
{
*rbufsize = fRbufSize;
*rcount = fRcount;
@@ -141,12 +142,13 @@ FireWireCard::GetBufInfo(size_t *rbufsize, int *rcount)
status_t
FireWireCard::DetectRecvFn()
{
char *buf, ich = TAG | CHANNEL;
char* buf;
char ich = TAG | CHANNEL;
struct fw_isochreq isoreq;
struct fw_isobufreq bufreq;
int len;
u_int32_t *ptr;
struct ciphdr *ciph;
u_int32_t* ptr;
struct ciphdr* ciph;
bufreq.rx.nchunk = 8;
bufreq.rx.npacket = 16;
@@ -164,12 +166,12 @@ FireWireCard::DetectRecvFn()
if (ioctl(fDev, FW_SRSTREAM, &isoreq) < 0)
return errno;
buf = (char *)malloc(1024*16);
buf = (char*)malloc(1024*16);
len = read(fDev, buf, 1024*16);
if (len < 0)
return errno;
ptr = (u_int32_t *) buf;
ciph = (struct ciphdr *)(ptr + 1);
ptr = (u_int32_t*) buf;
ciph = (struct ciphdr*)(ptr + 1);
switch(ciph->fmt) {
case CIP_FMT_DVCR:
@@ -197,7 +199,7 @@ FireWireCard::DetectRecvFn()
ssize_t
FireWireCard::DvRead(void **buffer)
FireWireCard::DvRead(void** buffer)
{
struct fw_isochreq isoreq;
struct fw_isobufreq bufreq;
@@ -234,30 +236,30 @@ FireWireCard::DvRead(void **buffer)
status_t
FireWireCard::DvExtract(void *dest, void **src, ssize_t *sizeUsed)
FireWireCard::DvExtract(void* dest, void** src, ssize_t* sizeUsed)
{
struct dvdbc *dv;
struct ciphdr *ciph;
struct fw_pkt *pkt;
u_int32_t *ptr;
struct dvdbc* dv;
struct ciphdr* ciph;
struct fw_pkt* pkt;
u_int32_t* ptr;
int nblocks[] = {250 /* NTSC */, 300 /* PAL */};
int npad, k, m, system = -1, nb;
k = m = 0;
ptr = (u_int32_t *) (*src);
ptr = (u_int32_t*) (*src);
pkt = (struct fw_pkt *) ptr;
ciph = (struct ciphdr *)(ptr + 1); /* skip iso header */
pkt = (struct fw_pkt*) ptr;
ciph = (struct ciphdr*)(ptr + 1); /* skip iso header */
if (ciph->fmt != CIP_FMT_DVCR) {
fprintf(stderr, "unknown format 0x%x", ciph->fmt);
return B_ERROR;
}
ptr = (u_int32_t *) (ciph + 1); /* skip cip header */
ptr = (u_int32_t*) (ciph + 1); /* skip cip header */
if (pkt->mode.stream.len <= sizeof(struct ciphdr))
/* no payload */
return B_ERROR;
for (dv = (struct dvdbc *)ptr;
(char *)dv < (char *)(ptr + ciph->len);
for (dv = (struct dvdbc*)ptr;
(char*)dv < (char *)(ptr + ciph->len);
dv+=6) {
if (dv->sct == DV_SCT_HEADER && dv->dseq == 0) {
@@ -282,7 +284,7 @@ FireWireCard::DvExtract(void *dest, void **src, ssize_t *sizeUsed)
npad);
npad *= DV_DSIZE;
memcpy(dest, fPad, npad);
dest = (char *)dest + npad;
dest = (char*)dest + npad;
}
#endif
k++;
@@ -297,16 +299,16 @@ FireWireCard::DvExtract(void *dest, void **src, ssize_t *sizeUsed)
continue;
m++;
memcpy(dest, dv, DV_DSIZE);
dest = (char *)dest + DV_DSIZE;
dest = (char*)dest + DV_DSIZE;
}
ptr = (u_int32_t *)dv;
ptr = (u_int32_t*)dv;
*src = ptr;
return B_OK;
}
ssize_t
FireWireCard::MpegtsRead(void **buffer)
FireWireCard::MpegtsRead(void** buffer)
{
struct fw_isochreq isoreq;
struct fw_isobufreq bufreq;
@@ -344,20 +346,20 @@ FireWireCard::MpegtsRead(void **buffer)
status_t
FireWireCard::MpegtsExtract(void *dest, void **src, ssize_t *sizeUsed)
FireWireCard::MpegtsExtract(void* dest, void** src, ssize_t* sizeUsed)
{
uint32_t *ptr;
struct fw_pkt *pkt;
struct ciphdr *ciph;
struct mpeg_pldt *pld;
uint32_t* ptr;
struct fw_pkt* pkt;
struct ciphdr* ciph;
struct mpeg_pldt* pld;
int pkt_size, startwr;
ptr = (uint32_t *)(*src);
startwr = 0;
pkt = (struct fw_pkt *) ptr;
pkt = (struct fw_pkt*) ptr;
/* there is no CRC in the 1394 header */
ciph = (struct ciphdr *)(ptr + 1); /* skip iso header */
ciph = (struct ciphdr*)(ptr + 1); /* skip iso header */
if (ciph->fmt != CIP_FMT_MPEG) {
fprintf(stderr, "unknown format 0x%x", ciph->fmt);
return B_ERROR;
@@ -367,7 +369,7 @@ FireWireCard::MpegtsExtract(void *dest, void **src, ssize_t *sizeUsed)
"fn=3 is supported)", ciph->fn);
return B_ERROR;
}
ptr = (uint32_t *) (ciph + 1); /* skip cip header */
ptr = (uint32_t*) (ciph + 1); /* skip cip header */
if (pkt->mode.stream.len <= sizeof(struct ciphdr)) {
/* no payload */
@@ -381,12 +383,12 @@ FireWireCard::MpegtsExtract(void *dest, void **src, ssize_t *sizeUsed)
startwr = 1;
/* Read out all the MPEG TS data blocks from current packet */
for (pld = (struct mpeg_pldt *)ptr;
(intptr_t)pld < (intptr_t)((char *)ptr +
(intptr_t)pld < (intptr_t)((char*)ptr +
pkt->mode.stream.len - sizeof(struct ciphdr));
pld++) {
if (startwr == 1) {
memcpy(dest, pld->payload, sizeof(pld->payload));
dest = (char *)dest + sizeof(pld->payload);
dest = (char*)dest + sizeof(pld->payload);
}
}
@@ -394,7 +396,8 @@ next:
/* CRCs are removed from both header and trailer
so that only 4 bytes of 1394 header remains */
pkt_size = pkt->mode.stream.len + 4;
ptr = (uint32_t *)((intptr_t)pkt + pkt_size);
ptr = (uint32_t*)((intptr_t)pkt + pkt_size);
*src = ptr;
return B_OK;
}
@@ -9,35 +9,37 @@
#ifndef __FIREWIRE_CARD_H
#define __FIREWIRE_CARD_H
#include <SupportDefs.h>
class FireWireCard
{
public:
enum fmt_type {
FMT_MPEGTS = 0,
FMT_DV = 1,
};
FireWireCard(const char *path);
~FireWireCard();
enum fmt_type {
FMT_MPEGTS = 0,
FMT_DV = 1,
};
FireWireCard(const char* path);
~FireWireCard();
status_t InitCheck();
status_t DetectRecvFn();
ssize_t Read(void **buffer);
status_t Extract(void *dest, void **src, ssize_t *sizeUsed);
ssize_t Read(void** buffer);
status_t Extract(void* dest, void** src, ssize_t* sizeUsed);
void GetBufInfo(size_t *rbufsize, int *rcount);
void GetBufInfo(size_t* rbufsize, int* rcount);
private:
ssize_t DvRead(void **buffer);
status_t DvExtract(void *dest, void **src, ssize_t *sizeUsed);
ssize_t MpegtsRead(void **buffer);
status_t MpegtsExtract(void *dest, void **src, ssize_t *sizeUsed);
ssize_t DvRead(void** buffer);
status_t DvExtract(void* dest, void** src, ssize_t* sizeUsed);
ssize_t MpegtsRead(void** buffer);
status_t MpegtsExtract(void* dest, void** src,
ssize_t* sizeUsed);
status_t fInitStatus;
int fDev;
void *fBuf;
void *fPad;
void* fBuf;
void* fPad;
size_t fRbufSize;
int fRcount;
fmt_type fFormat;
@@ -45,3 +47,4 @@ private:
};
#endif
@@ -15,6 +15,7 @@
#include <stdio.h>
#include <string.h>
#include <time.h>
#include <Alert.h>
#include <Directory.h>
#include <Entry.h>
@@ -24,35 +25,38 @@
struct device_info
{
FireWireCard * card;
char name[16];
FireWireCard* card;
char name[16];
media_format in_formats[1];
media_format out_formats[1];
flavor_info flavor;
};
extern "C" BMediaAddOn *
extern "C" BMediaAddOn*
make_media_addon(image_id id)
{
CALLED();
return new FireWireDVAddOn(id);
}
FireWireDVAddOn::FireWireDVAddOn(image_id id)
: BMediaAddOn(id)
{
CALLED();
ScanFolder("/dev/bus/fw");
}
FireWireDVAddOn::~FireWireDVAddOn()
{
CALLED();
FreeDeviceList();
}
FireWireDVAddOn::FireWireDVAddOn(image_id id)
: BMediaAddOn(id)
{
CALLED();
ScanFolder("/dev/bus/fw");
}
status_t
FireWireDVAddOn::InitCheck(const char **out_failure_text)
FireWireDVAddOn::InitCheck(const char** out_failure_text)
{
CALLED();
if (!fDeviceList.CountItems()) {
@@ -62,6 +66,7 @@ FireWireDVAddOn::InitCheck(const char **out_failure_text)
return B_OK;
}
int32
FireWireDVAddOn::CountFlavors()
{
@@ -69,31 +74,36 @@ FireWireDVAddOn::CountFlavors()
return fDeviceList.CountItems();
}
status_t
FireWireDVAddOn::GetFlavorAt(int32 n, const flavor_info **out_info)
FireWireDVAddOn::GetFlavorAt(int32 n, const flavor_info** out_info)
{
CALLED();
device_info *dev = (device_info *)fDeviceList.ItemAt(n);
device_info* dev = fDeviceList.ItemAt(n);
if (!dev)
return B_ERROR;
*out_info = &dev->flavor;
return B_OK;
}
BMediaNode *
FireWireDVAddOn::InstantiateNodeFor(const flavor_info *info, BMessage *config, status_t *out_error)
FireWireDVAddOn::InstantiateNodeFor(const flavor_info* info, BMessage* config,
status_t* out_error)
{
CALLED();
device_info *dev = (device_info *)fDeviceList.ItemAt(info->internal_id);
device_info* dev = fDeviceList.ItemAt(info->internal_id);
if (!dev || dev->flavor.internal_id != info->internal_id) {
*out_error = B_ERROR;
return NULL;
}
*out_error = B_OK;
return new FireWireDVNode(this, dev->name, dev->flavor.internal_id, dev->card);
return new FireWireDVNode(this, dev->name, dev->flavor.internal_id,
dev->card);
}
bool
FireWireDVAddOn::WantsAutoStart()
{
@@ -101,15 +111,18 @@ FireWireDVAddOn::WantsAutoStart()
return false;
}
status_t
FireWireDVAddOn::AutoStart(int index, BMediaNode **outNode, int32 *outInternalID, bool *outHasMore)
FireWireDVAddOn::AutoStart(int index, BMediaNode** outNode,
int32* outInternalID, bool* outHasMore)
{
CALLED();
return B_ERROR;
}
void
FireWireDVAddOn::ScanFolder(const char *path)
FireWireDVAddOn::ScanFolder(const char* path)
{
CALLED();
BDirectory dir(path);
@@ -130,10 +143,11 @@ FireWireDVAddOn::ScanFolder(const char *path)
}
}
void
FireWireDVAddOn::AddDevice(FireWireCard *card, const char *path)
FireWireDVAddOn::AddDevice(FireWireCard* card, const char* path)
{
const char *fwnumber;
const char* fwnumber;
// get card name, info and type
@@ -175,9 +189,10 @@ FireWireDVAddOn::AddDevice(FireWireCard *card, const char *path)
void
FireWireDVAddOn::FreeDeviceList()
{
device_info *dev;
while ((dev = (device_info *)fDeviceList.RemoveItem((int32)0))) {
device_info* dev;
while ((dev = fDeviceList.RemoveItemAt(0L))) {
delete dev->card;
delete dev;
}
}
@@ -12,34 +12,37 @@
#define _FIREWIRE_DV_ADDON_H_
#include <MediaAddOn.h>
#include <ObjectList.h>
class FireWireCard;
struct device_info;
class FireWireDVAddOn : public BMediaAddOn
{
public:
FireWireDVAddOn(image_id id);
~FireWireDVAddOn();
FireWireDVAddOn(image_id id);
~FireWireDVAddOn();
status_t InitCheck(const char **out_failure_text);
status_t InitCheck(const char** out_failure_text);
int32 CountFlavors();
status_t GetFlavorAt(int32 n, const flavor_info **out_info);
status_t GetFlavorAt(int32 n, const flavor_info** out_info);
BMediaNode *InstantiateNodeFor(const flavor_info *info, BMessage *config, status_t *out_error);
BMediaNode* InstantiateNodeFor(const flavor_info* info,
BMessage* config, status_t* out_error);
bool WantsAutoStart();
status_t AutoStart(int index, BMediaNode **outNode, int32 *outInternalID, bool *outHasMore);
status_t AutoStart(int index, BMediaNode** outNode,
int32* outInternalID, bool* outHasMore);
protected:
void ScanFolder(const char *path);
void AddDevice(FireWireCard *card, const char *path);
void ScanFolder(const char* path);
void AddDevice(FireWireCard* card, const char* path);
void FreeDeviceList();
protected:
BList fDeviceList;
BObjectList<device_info> fDeviceList;
};
#endif
@@ -8,6 +8,8 @@
* Copyright (c) 2004-2007 Marcus Overhagen <[email protected]>
*/
#include "FireWireDVNode.h"
#include <fcntl.h>
#include <malloc.h>
#include <math.h>
@@ -17,18 +19,17 @@
#include <sys/uio.h>
#include <unistd.h>
#include <MediaRoster.h>
#include <Autolock.h>
#include <Buffer.h>
#include <BufferGroup.h>
#include <ParameterWeb.h>
#include <TimeSource.h>
#include <String.h>
#include <Autolock.h>
#include <Debug.h>
#include <Directory.h>
#include <Entry.h>
#include <MediaRoster.h>
#include <ParameterWeb.h>
#include <Path.h>
#include <TimeSource.h>
#include <String.h>
#include "FireWireDVNode.h"
#include "FireWireCard.h"
@@ -42,7 +43,7 @@
#ifdef TRACE
# undef TRACE
#endif
#define TRACE_FIREWIRE_NODE
//#define TRACE_FIREWIRE_NODE
#ifdef TRACE_FIREWIRE_NODE
# define TRACE(x...) printf(x)
#else
@@ -53,20 +54,19 @@
#define M_REFRESH_PARAMETER_WEB (BTimedEventQueue::B_USER_EVENT + 1)
FireWireDVNode::FireWireDVNode(
BMediaAddOn *addon, const char *name,
int32 internal_id, FireWireCard *card)
: BMediaNode(name)
, BBufferProducer(B_MEDIA_ENCODED_VIDEO)
, BControllable()
, BMediaEventLooper()
, fOutputEnabledEncVideo(false)
, fCard(card)
, fCaptureThreadsActive(false)
, fThreadIdCardReader(-1)
, fTerminateThreads(false)
, fBufferGroupEncVideo(0)
, fCaptureActive(false)
FireWireDVNode::FireWireDVNode(BMediaAddOn* addon, const char* name,
int32 internal_id, FireWireCard* card)
: BMediaNode(name),
BBufferProducer(B_MEDIA_ENCODED_VIDEO),
BControllable(),
BMediaEventLooper(),
fOutputEnabledEncVideo(false),
fCard(card),
fCaptureThreadsActive(false),
fThreadIdCardReader(-1),
fTerminateThreads(false),
fBufferGroupEncVideo(0),
fCaptureActive(false)
{
CALLED();
@@ -92,10 +92,8 @@ FireWireDVNode::~FireWireDVNode()
/* BMediaNode */
BMediaAddOn *
FireWireDVNode::AddOn(int32 *internal_id) const
BMediaAddOn*
FireWireDVNode::AddOn(int32* internal_id) const
{
if (internal_id)
*internal_id = fInternalID;
@@ -104,7 +102,7 @@ FireWireDVNode::AddOn(int32 *internal_id) const
status_t
FireWireDVNode::HandleMessage(int32 message, const void *data, size_t size)
FireWireDVNode::HandleMessage(int32 message, const void* data, size_t size)
{
return B_ERROR;
}
@@ -119,7 +117,7 @@ FireWireDVNode::Preroll()
void
FireWireDVNode::SetTimeSource(BTimeSource *time_source)
FireWireDVNode::SetTimeSource(BTimeSource* time_source)
{
CALLED();
}
@@ -134,8 +132,6 @@ FireWireDVNode::SetRunMode(run_mode mode)
/* BMediaEventLooper */
void
FireWireDVNode::NodeRegistered()
{
@@ -156,8 +152,8 @@ FireWireDVNode::NodeRegistered()
void
FireWireDVNode::HandleEvent(const media_timed_event *event,
bigtime_t lateness, bool realTimeEvent)
FireWireDVNode::HandleEvent(const media_timed_event* event,
bigtime_t lateness, bool realTimeEvent)
{
switch(event->type)
@@ -188,12 +184,10 @@ FireWireDVNode::HandleEvent(const media_timed_event *event,
/* BBufferProducer */
status_t
FireWireDVNode::FormatChangeRequested(const media_source &source,
const media_destination &destination, media_format *io_format,
int32 *_deprecated_)
FireWireDVNode::FormatChangeRequested(const media_source& source,
const media_destination& destination, media_format* io_format,
int32* _deprecated_)
{
CALLED();
@@ -203,7 +197,7 @@ FireWireDVNode::FormatChangeRequested(const media_source &source,
status_t
FireWireDVNode::GetNextOutput(int32 *cookie, media_output *out_output)
FireWireDVNode::GetNextOutput(int32* cookie, media_output* out_output)
{
CALLED();
@@ -227,7 +221,7 @@ FireWireDVNode::DisposeOutputCookie(int32 cookie)
status_t
FireWireDVNode::SetBufferGroup(const media_source &source, BBufferGroup *group)
FireWireDVNode::SetBufferGroup(const media_source& source, BBufferGroup* group)
{
CALLED();
return B_ERROR;
@@ -235,9 +229,9 @@ FireWireDVNode::SetBufferGroup(const media_source &source, BBufferGroup *group)
status_t
FireWireDVNode::VideoClippingChanged(const media_source &for_source,
int16 num_shorts, int16 *clip_data,
const media_video_display_info &display, int32 *_deprecated_)
FireWireDVNode::VideoClippingChanged(const media_source& for_source,
int16 num_shorts, int16* clip_data,
const media_video_display_info& display, int32* _deprecated_)
{
CALLED();
return B_ERROR;
@@ -245,7 +239,7 @@ FireWireDVNode::VideoClippingChanged(const media_source &for_source,
status_t
FireWireDVNode::GetLatency(bigtime_t *out_latency)
FireWireDVNode::GetLatency(bigtime_t* out_latency)
{
CALLED();
@@ -256,7 +250,7 @@ FireWireDVNode::GetLatency(bigtime_t *out_latency)
status_t
FireWireDVNode::FormatSuggestionRequested(
media_type type, int32 quality, media_format *format)
media_type type, int32 quality, media_format* format)
{
CALLED();
@@ -280,7 +274,8 @@ FireWireDVNode::FormatSuggestionRequested(
status_t
FireWireDVNode::FormatProposal(const media_source &source, media_format *format)
FireWireDVNode::FormatProposal(const media_source& source,
media_format* format)
{
CALLED();
/* The connection process:
@@ -320,9 +315,9 @@ FireWireDVNode::FormatProposal(const media_source &source, media_format *format)
status_t
FireWireDVNode::PrepareToConnect(const media_source &source,
const media_destination &destination, media_format *format,
media_source *out_source, char *out_name)
FireWireDVNode::PrepareToConnect(const media_source& source,
const media_destination& destination, media_format* format,
media_source* out_source, char* out_name)
{
/* The connection process:
* BBufferProducer::FormatProposal
@@ -372,9 +367,9 @@ FireWireDVNode::PrepareToConnect(const media_source &source,
void
FireWireDVNode::Connect(status_t error, const media_source &source,
const media_destination &destination, const media_format &format,
char *io_name)
FireWireDVNode::Connect(status_t error, const media_source& source,
const media_destination& destination, const media_format& format,
char* io_name)
{
/* The connection process:
* BBufferProducer::FormatProposal
@@ -417,7 +412,7 @@ FireWireDVNode::Connect(status_t error, const media_source &source,
void
FireWireDVNode::Disconnect(const media_source &source,
const media_destination &destination)
const media_destination& destination)
{
CALLED();
@@ -428,16 +423,16 @@ FireWireDVNode::Disconnect(const media_source &source,
void
FireWireDVNode::LateNoticeReceived(const media_source &source,
bigtime_t how_much, bigtime_t performance_time)
FireWireDVNode::LateNoticeReceived(const media_source& source,
bigtime_t how_much, bigtime_t performance_time)
{
TRACE("FireWireDVNode::LateNoticeReceived %Ld late at %Ld\n", how_much, performance_time);
}
void
FireWireDVNode::EnableOutput(const media_source &source, bool enabled,
int32 *_deprecated_)
FireWireDVNode::EnableOutput(const media_source& source, bool enabled,
int32* _deprecated_)
{
CALLED();
fOutputEnabledEncVideo = enabled;
@@ -445,9 +440,9 @@ FireWireDVNode::EnableOutput(const media_source &source, bool enabled,
void
FireWireDVNode::AdditionalBufferRequested(const media_source &source,
media_buffer_id prev_buffer, bigtime_t prev_time,
const media_seek_tag *prev_tag)
FireWireDVNode::AdditionalBufferRequested(const media_source& source,
media_buffer_id prev_buffer, bigtime_t prev_time,
const media_seek_tag* prev_tag)
{
CALLED();
// we don't support offline mode
@@ -456,8 +451,6 @@ FireWireDVNode::AdditionalBufferRequested(const media_source &source,
/* FireWireDVNode */
void
FireWireDVNode::HandleTimeWarp(bigtime_t performance_time)
{
@@ -559,7 +552,7 @@ FireWireDVNode::StopCaptureThreads()
int32
FireWireDVNode::_card_reader_thread_(void *arg)
FireWireDVNode::_card_reader_thread_(void* arg)
{
static_cast<FireWireDVNode *>(arg)->card_reader_thread();
return 0;
@@ -585,10 +578,10 @@ FireWireDVNode::card_reader_thread()
continue;
}
end = (char *)data + sizeUsed;
end = (char*)data + sizeUsed;
while (data < end) {
BBuffer *buf = fBufferGroupEncVideo->RequestBuffer(rbufsize, 10000);
BBuffer* buf = fBufferGroupEncVideo->RequestBuffer(rbufsize, 10000);
if (!buf) {
TRACE("OutVideo: request buffer timout\n");
continue;
@@ -608,12 +601,12 @@ FireWireDVNode::card_reader_thread()
//what should the start_time be?
hdr->start_time = TimeSource()->PerformanceTimeFor(system_time());
lock.Lock();
fLock.Lock();
if (B_OK != SendBuffer(buf, fOutputEncVideo.destination)) {
TRACE("OutVideo: sending buffer failed\n");
buf->Recycle();
}
lock.Unlock();
fLock.Unlock();
}
}
@@ -631,7 +624,7 @@ FireWireDVNode::RefreshParameterWeb()
void
FireWireDVNode::SetAboutInfo(BParameterGroup *about)
FireWireDVNode::SetAboutInfo(BParameterGroup* about)
{
//May need more useful infomation?
about->MakeNullParameter(0, B_MEDIA_NO_TYPE, "FireWireDV media_addon info:", B_GENERIC);
@@ -648,17 +641,17 @@ BParameterWeb *
FireWireDVNode::CreateParameterWeb()
{
/* Set up the parameter web */
BParameterWeb *web = new BParameterWeb();
BParameterWeb* web = new BParameterWeb();
BString name;
name << Name();
BParameterGroup *main = web->MakeGroup(name.String());
BParameterGroup* main = web->MakeGroup(name.String());
if (!fCaptureActive) {
BParameterGroup *info = main->MakeGroup("Info");
BParameterGroup* info = main->MakeGroup("Info");
info->MakeNullParameter(0, B_MEDIA_NO_TYPE, info->Name(), B_GENERIC);
BParameterGroup *about = main->MakeGroup("About");
BParameterGroup* about = main->MakeGroup("About");
about->MakeNullParameter(0, B_MEDIA_NO_TYPE, about->Name(), B_GENERIC);
SetAboutInfo(about);
info->MakeNullParameter(0, B_MEDIA_NO_TYPE, "Node is stopped", B_GENERIC);
@@ -666,7 +659,7 @@ FireWireDVNode::CreateParameterWeb()
return web;
}
BParameterGroup *about = main->MakeGroup("About");
BParameterGroup* about = main->MakeGroup("About");
about->MakeNullParameter(0, B_MEDIA_NO_TYPE, about->Name(), B_GENERIC);
SetAboutInfo(about);
@@ -675,7 +668,8 @@ FireWireDVNode::CreateParameterWeb()
status_t
FireWireDVNode::GetParameterValue(int32 id, bigtime_t *last_change, void *value, size_t *size)
FireWireDVNode::GetParameterValue(int32 id, bigtime_t* last_change,
void* value, size_t* size)
{
TRACE("FireWireDVNode::GetParameterValue, id 0x%lx\n", id);
//do we need Parameter for firewire dv?
@@ -684,9 +678,12 @@ FireWireDVNode::GetParameterValue(int32 id, bigtime_t *last_change, void *value,
void
FireWireDVNode::SetParameterValue(int32 id, bigtime_t when, const void *value, size_t size)
FireWireDVNode::SetParameterValue(int32 id, bigtime_t when, const void* value,
size_t size)
{
TRACE("FireWireDVNode::SetParameterValue, id 0x%lx, size %ld, value 0x%lx\n", id, size, *(const int32 *)value);
TRACE("FireWireDVNode::SetParameterValue, id 0x%lx, size %ld, "
"value 0x%lx\n", id, size, *(const int32*)value);
//do we need parameter for firewire dv?
TRACE("FireWireDVNode::SetParameterValue finished\n");
}
@@ -27,119 +27,121 @@ class BParameterGroup;
class FireWireDVNode : public virtual BBufferProducer,
public virtual BControllable, public virtual BMediaEventLooper {
public:
FireWireDVNode(BMediaAddOn *addon,
const char *name, int32 internal_id, FireWireCard *card);
virtual ~FireWireDVNode();
virtual status_t InitCheck() const { return fInitStatus; }
FireWireDVNode(BMediaAddOn *addon,
const char *name, int32 internal_id,
FireWireCard *card);
virtual ~FireWireDVNode();
virtual status_t InitCheck() const { return fInitStatus; }
/* BMediaNode */
public:
virtual BMediaAddOn *AddOn(int32 * internal_id) const;
virtual status_t HandleMessage(int32 message, const void *data,
size_t size);
virtual BMediaAddOn *AddOn(int32 * internal_id) const;
virtual status_t HandleMessage(int32 message, const void *data,
size_t size);
protected:
virtual void Preroll();
virtual void SetTimeSource(BTimeSource * time_source);
virtual void SetRunMode(run_mode mode);
virtual void Preroll();
virtual void SetTimeSource(BTimeSource * time_source);
virtual void SetRunMode(run_mode mode);
/* BMediaEventLooper */
protected:
virtual void NodeRegistered();
virtual void HandleEvent(const media_timed_event *event,
bigtime_t lateness, bool realTimeEvent = false);
virtual void NodeRegistered();
virtual void HandleEvent(const media_timed_event *event,
bigtime_t lateness,
bool realTimeEvent = false);
/* BBufferProducer */
protected:
virtual status_t FormatSuggestionRequested(media_type type, int32 quality,
media_format * format);
virtual status_t FormatProposal(const media_source &source,
media_format *format);
virtual status_t FormatChangeRequested(const media_source &source,
const media_destination &destination,
media_format *io_format, int32 *_deprecated_);
virtual status_t GetNextOutput(int32 * cookie, media_output * out_output);
virtual status_t DisposeOutputCookie(int32 cookie);
virtual status_t SetBufferGroup(const media_source &for_source,
BBufferGroup * group);
virtual status_t VideoClippingChanged(const media_source &for_source,
int16 num_shorts, int16 *clip_data,
const media_video_display_info &display,
int32 * _deprecated_);
virtual status_t GetLatency(bigtime_t * out_latency);
virtual status_t PrepareToConnect(const media_source &what,
const media_destination &where,
media_format *format,
media_source *out_source, char *out_name);
virtual void Connect(status_t error, const media_source &source,
const media_destination &destination,
const media_format & format, char *io_name);
virtual void Disconnect(const media_source & what,
const media_destination & where);
virtual void LateNoticeReceived(const media_source & what,
bigtime_t how_much, bigtime_t performance_time);
virtual void EnableOutput(const media_source & what, bool enabled,
int32 * _deprecated_);
virtual void AdditionalBufferRequested(const media_source & source,
media_buffer_id prev_buffer, bigtime_t prev_time,
const media_seek_tag * prev_tag);
virtual status_t FormatSuggestionRequested(media_type type,
int32 quality, media_format* format);
virtual status_t FormatProposal(const media_source &source,
media_format* format);
virtual status_t FormatChangeRequested(
const media_source &source,
const media_destination &destination,
media_format* io_format,
int32* _deprecated_);
virtual status_t GetNextOutput(int32* cookie,
media_output* out_output);
virtual status_t DisposeOutputCookie(int32 cookie);
virtual status_t SetBufferGroup(const media_source& for_source,
BBufferGroup* group);
virtual status_t VideoClippingChanged(
const media_source& for_source,
int16 num_shorts, int16* clip_data,
const media_video_display_info &display,
int32* _deprecated_);
virtual status_t GetLatency(bigtime_t* out_latency);
virtual status_t PrepareToConnect(const media_source& what,
const media_destination& where,
media_format* format,
media_source* out_source,
char* out_name);
virtual void Connect(status_t error,
const media_source& source,
const media_destination& destination,
const media_format& format,
char* io_name);
virtual void Disconnect(const media_source& what,
const media_destination& where);
virtual void LateNoticeReceived(const media_source& what,
bigtime_t how_much,
bigtime_t performance_time);
virtual void EnableOutput(const media_source& what,
bool enabled, int32* _deprecated_);
virtual void AdditionalBufferRequested(
const media_source& source,
media_buffer_id prev_buffer,
bigtime_t prev_time,
const media_seek_tag* prev_tag);
/* BControllable */
protected:
virtual status_t GetParameterValue(int32 id, bigtime_t *last_change,
void *value, size_t *size);
virtual void SetParameterValue(int32 id, bigtime_t when,
const void *value, size_t size);
virtual status_t GetParameterValue(int32 id,
bigtime_t* last_change, void* value,
size_t* size);
virtual void SetParameterValue(int32 id, bigtime_t when,
const void* value, size_t size);
/* state */
private:
void HandleStart(bigtime_t performance_time);
void HandleStop();
void HandleTimeWarp(bigtime_t performance_time);
void HandleSeek(bigtime_t performance_time);
void HandleStart(bigtime_t performance_time);
void HandleStop();
void HandleTimeWarp(bigtime_t performance_time);
void HandleSeek(bigtime_t performance_time);
BParameterWeb * CreateParameterWeb();
void SetAboutInfo(BParameterGroup *about);
BParameterWeb* CreateParameterWeb();
void SetAboutInfo(BParameterGroup *about);
void RefreshParameterWeb();
void RefreshParameterWeb();
status_t StartCapture();
status_t StopCapture();
status_t StartCaptureThreads();
status_t StopCaptureThreads();
status_t StartCapture();
status_t StopCapture();
status_t StartCaptureThreads();
status_t StopCaptureThreads();
static int32 _card_reader_thread_(void *arg);
static int32 _card_reader_thread_(void *arg);
void card_reader_thread();
void card_reader_thread();
status_t fInitStatus;
int32 fInternalID;
BMediaAddOn *fAddOn;
bool fOutputEnabledEncVideo;
media_output fOutputEncVideo;
media_format fDefaultFormatEncVideo;
FireWireCard * fCard;
bool fCaptureThreadsActive;
thread_id fThreadIdCardReader;
volatile bool fTerminateThreads;
BBufferGroup * fBufferGroupEncVideo;
BParameterWeb * fWeb;
bool fCaptureActive;
BLocker lock;
status_t fInitStatus;
int32 fInternalID;
BMediaAddOn* fAddOn;
bool fOutputEnabledEncVideo;
media_output fOutputEncVideo;
media_format fDefaultFormatEncVideo;
FireWireCard* fCard;
bool fCaptureThreadsActive;
thread_id fThreadIdCardReader;
volatile bool fTerminateThreads;
BBufferGroup* fBufferGroupEncVideo;
BParameterWeb* fWeb;
bool fCaptureActive;
BLocker fLock;
};
#endif // __FIREWIRE_DV_NODE_H
@@ -1,8 +1,10 @@
SubDir HAIKU_TOP src add-ons media media-add-ons firewire_dv ;
UseHeaders [ FDirName $(HAIKU_TOP) headers compatibility bsd ] : true ;
UsePrivateHeaders media ;
UsePrivateHeaders firewire ;
UsePrivateHeaders media ;
UsePrivateHeaders shared ;
Addon firewire_dv.media_addon :
FireWireCard.cpp