Update of /cvsroot/dirac/compress/libdirac_decoder
In directory
sc8-pr-cvs12.sourceforge.net:/tmp/cvs-serv11732/libdirac_dec
oder
Modified Files:
frame_decompress.cpp seq_decompress.cpp
Log Message:
Added new function to FrameBuffer to check if frame is
available before
using it. This is to prevent from trying to dereference a
non-existent first
frame from the buffer. This function is a temporary fix.
FrameBuffer might need
to be re-written to return pointer to a frame in the buffer
rather than a
reference so that the return value can be checked for NULL
before using it.
Index: seq_decompress.cpp
============================================================
=======
RCS file:
/cvsroot/dirac/compress/libdirac_decoder/seq_decompress.cpp,
v
retrieving revision 1.17
retrieving revision 1.18
diff -C2 -d -r1.17 -r1.18
*** seq_decompress.cpp 19 Mar 2007 15:39:29 -0000 1.17
--- seq_decompress.cpp 26 Apr 2007 13:56:31 -0000 1.18
***************
*** 119,125 ****
TEST (m_fdecoder != NULL);
- // A flag indicating whether the frame is in the
buffer
- bool is_present;
-
// Remove the last displayed frame from the buffer if
it wasn't a reference
if ( m_show_fnum>0 )
--- 119,122 ----
***************
*** 127,138 ****
if ( m_decparams.Verbose() )
std::cout<<std::endl<<"Cleaning display
buffer: ";
! if ( m_fbuffer->GetFrame(m_show_fnum-1,
is_present).GetFparams().FSort().IsNonRef() )
{
! if ( is_present )
! {
! m_fbuffer->Clean(m_show_fnum-1);
! if ( m_decparams.Verbose() )
!
std::cout<<(m_show_fnum-1)<<" ";
! }
}
}
--- 124,133 ----
if ( m_decparams.Verbose() )
std::cout<<std::endl<<"Cleaning display
buffer: ";
! if ( m_fbuffer->IsFrameAvail(m_show_fnum-1)
&&
!
m_fbuffer->GetFrame(m_show_fnum-1).GetFparams().FSort().I
sNonRef() )
{
! m_fbuffer->Clean(m_show_fnum-1);
! if ( m_decparams.Verbose() )
!
std::cout<<(m_show_fnum-1)<<" ";
}
}
Index: frame_decompress.cpp
============================================================
=======
RCS file:
/cvsroot/dirac/compress/libdirac_decoder/frame_decompress.cp
p,v
retrieving revision 1.25
retrieving revision 1.26
diff -C2 -d -r1.25 -r1.26
*** frame_decompress.cpp 11 Apr 2007 08:08:49 -0000 1.25
--- frame_decompress.cpp 26 Apr 2007 13:56:31 -0000 1.26
***************
*** 110,120 ****
const std::vector<int>& refs =
m_fparams.Refs();
- // A flag used to indicate whether frames reside
in the buffer
- bool is_present;
-
for (unsigned int i = 0; i < refs.size(); ++i)
{
! const Frame &ref_frame =
my_buffer.GetFrame(refs[i], is_present);
! if ( ref_frame.GetFparams().FrameNum() !=
refs[i] || is_present==false )
{
return false;
--- 110,116 ----
const std::vector<int>& refs =
m_fparams.Refs();
for (unsigned int i = 0; i < refs.size(); ++i)
{
! if ( !my_buffer.IsFrameAvail(refs[i]) )
{
return false;
***************
*** 214,226 ****
for (size_t i = 0; i < retd_list.size(); ++i)
{
! bool is_present;
! if ( my_buffer.GetFrame(retd_list[i],
is_present).GetFparams().FSort().IsRef() )
{
! if ( is_present )
! {
! my_buffer.Clean(retd_list[i]);
! if ( m_decparams.Verbose() )
!
std::cout<<retd_list[i]<<" ";
! }
}
}
--- 210,218 ----
for (size_t i = 0; i < retd_list.size(); ++i)
{
! if ( my_buffer.IsFrameAvail(retd_list[i])
&&
my_buffer.GetFrame(retd_list[i]).GetFparams().FSort().IsRef(
) )
{
! my_buffer.Clean(retd_list[i]);
! if ( m_decparams.Verbose() )
!
std::cout<<retd_list[i]<<" ";
}
}
------------------------------------------------------------
-------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and
take
control of your XML. No limits. Just data. Click to get it
now.
http://sourcefor
ge.net/powerbar/db2/
_______________________________________________
Dirac-commits mailing list
Dirac-commits lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/dirac-com
mits
|