[Sumover-dev] [svn commit] r4870 - in vic/branches/cc: codec rtp tcl
sumover-dev at cs.ucl.ac.uk
sumover-dev at cs.ucl.ac.uk
Thu Jul 15 20:43:44 BST 2010
Author: piers
Date: Thu Jul 15 20:43:43 2010
New Revision: 4870
Modified:
vic/branches/cc/codec/decoder.cpp
vic/branches/cc/rtp/transmitter.cpp
vic/branches/cc/tcl/ui-main.tcl
vic/branches/cc/video/grabber-still.cpp
Log:
Updated PSNR code so it works with remote receiver - need to load uncompressed file into still grabber on recv and sender. Noticed a problem with using Grabber.frame_ - it is for a single frame storage and gets changed when format/size gets altered. We should use something else...
Modified: vic/branches/cc/codec/decoder.cpp
==============================================================================
--- vic/branches/cc/codec/decoder.cpp (original)
+++ vic/branches/cc/codec/decoder.cpp Thu Jul 15 20:43:43 2010
@@ -152,7 +152,7 @@
}
if (strcmp(argv[1], "grabber") == 0) {
grabber_ = (Grabber*)TclObject::lookup(argv[2]);
- fprintf(stderr,"Setting this %d grabber_:%d\n", this,grabber_);
+ fprintf(stderr,"Decoder:Setting this %d grabber_:%d\n", this,grabber_);
return (TCL_OK);
}
}
@@ -322,8 +322,6 @@
return psnr;
}
-extern Grabber *ggrabber;
-
void Decoder::render_frame(const u_char* frm, int frame_no)
{
/*
@@ -336,7 +334,7 @@
* an unchanging block, this approach renders it 2 times out of 256,
* rather than 128 out of 256.
*/
- double psnr;
+ double psnr=0;
int wraptime = now_ ^ 0x80;
u_char* ts = rvts_;
for (int k = nblk_; --k >= 0; ++ts) {
@@ -345,9 +343,11 @@
}
YuvFrame f(now_, (u_int8_t*)frm, rvts_, inw_, inh_,0, frame_no);
- if (inw_*inh_ == grabber_->framesize_) {
- psnr = calc_psnr((u_int8_t*)frm, (u_int8_t*)grabber_->frame_+frame_no*(grabber_->framesize_+(grabber_->framesize_>>1)), inw_, inh_);
- fprintf(stderr,"Frame (%dx%d;fsz:%d,%d): %d, PSNR: %f\n",inw_,inh_, grabber_,grabber_->framesize_, frame_no, psnr);
+ if (grabber_!=0) {
+ int framesize=inw_*inh_;
+ psnr = calc_psnr((u_int8_t*)frm, (u_int8_t*)grabber_->frame_+frame_no*(framesize+(framesize>>1)), inw_, inh_);
+ //psnr = calc_psnr((u_int8_t*)frm, (u_int8_t*)grabber_->frame_+frame_no*(grabber_->framesize_+(grabber_->framesize_>>1)), inw_, inh_);
+ fprintf(stderr,"Frame (%dx%d;fsz:%d(%d),Grabber:%x): #%d, PSNR: %f\n",inw_,inh_,inw_*inh_, grabber_->framesize_,grabber_, frame_no, psnr);
}
for (Renderer* p = engines_; p != 0; p = p->next_)
if ((p->ft() & FT_HW) == 0)
Modified: vic/branches/cc/rtp/transmitter.cpp
==============================================================================
--- vic/branches/cc/rtp/transmitter.cpp (original)
+++ vic/branches/cc/rtp/transmitter.cpp Thu Jul 15 20:43:43 2010
@@ -527,7 +527,6 @@
void Transmitter::timeout()
{
double now = gettimeofday_secs();
- pktbuf* p = head_;
switch (cc_type_) {
case RBCC:
Modified: vic/branches/cc/tcl/ui-main.tcl
==============================================================================
--- vic/branches/cc/tcl/ui-main.tcl (original)
+++ vic/branches/cc/tcl/ui-main.tcl Thu Jul 15 20:43:43 2010
@@ -757,7 +757,7 @@
}
proc create_decoder src {
- global numLayers V
+ global numLayers videoDevice V
set format [rtp_format $src]
set decoder [new decoder $format]
@@ -770,7 +770,18 @@
$decoder maxChannel $numLayers
}
# Inform decoder obj of grabber to enable PSNR calculation
- $decoder grabber $V(grabber)
+ if { [$videoDevice nickname] == "still" } {
+ if ![have grabber] {
+ set V(grabber) [$videoDevice open cif]
+ if { $V(grabber) != "" } {
+ puts "ssspam"
+ $decoder grabber $V(grabber)
+ }
+ } else {
+ puts "spam"
+ $decoder grabber $V(grabber)
+ }
+ }
$src handler $decoder
return $decoder
@@ -817,7 +828,6 @@
grid columnconfigure $V(grid) $V(curcol) -weight 1
update_decoder $src
- $V(decoder) grabber $V(grabber)
after 1000 "update_src $src"
bump
Modified: vic/branches/cc/video/grabber-still.cpp
==============================================================================
--- vic/branches/cc/video/grabber-still.cpp (original)
+++ vic/branches/cc/video/grabber-still.cpp Thu Jul 15 20:43:43 2010
@@ -106,6 +106,7 @@
u_char *frame_;
int len_;
int devstat_; // device status
+ Grabber* grabber_;
private:
};
@@ -134,14 +135,18 @@
{
if (strcmp(argv[1], "open") == 0)
{
- const char* fmt = argv[2];
- TclObject* o = 0;
- if (strcmp(fmt, "cif") == 0)
- o = yuv_grabber();
- if (strcmp(fmt, "jpeg") == 0)
- o = jpeg_grabber();
- if (o != 0)
- Tcl::instance().result(o->name());
+ if (frame_ != 0) {
+ const char* fmt = argv[2];
+ TclObject* o = 0;
+ if (strcmp(fmt, "cif") == 0)
+ o = yuv_grabber();
+ if (strcmp(fmt, "jpeg") == 0)
+ o = jpeg_grabber();
+ if (o != 0) {
+ Tcl::instance().result(o->name());
+ grabber_=(Grabber*)o;
+ }
+ }
return (TCL_OK);
}
else if (strcmp(argv[1], "file") == 0)
@@ -184,12 +189,11 @@
len_ = s.st_size;
if (frame_)
- delete[] frame_; //SV-XXX: Debian
+ delete[] frame_; //SV-XXX: Debian
- frame_ = new u_char[len_ + 1];
+ frame_ = new u_char[len_ + 1];
r = fread(frame_, len_, 1, fp);
- debug_msg("Successfully loaded %s\n", f);
-
+ fprintf(stderr,"Successfully loaded %s\n", f);
devstat_ = 0; // device is now ready
fclose(fp);
}
@@ -317,6 +321,8 @@
width_(0), height_(0), nbytes_(0)
{
grabber_ts_off_ = grabber_now();
+ frame_=still_device.frame_;
+ fprintf(stderr,"StillYuvGrabber::StillYuvGrabber:frame_:%x\n",frame_);
}
StillYuvGrabber::~StillYuvGrabber()
@@ -334,8 +340,9 @@
void StillYuvGrabber::start()
{
target_->offset_ = grabber_ts_off_;
+ // XXX Need to change frame_ - it used for storage of video frame and (re)allocated elsewhere
frame_=still_device.frame_;
- fprintf(stderr,"frame_:%x\n",frame_);
+ fprintf(stderr,"StillYuvGrabber::start:frame_:%x\n",frame_);
Grabber::start();
}
More information about the Sumover-dev
mailing list