summaryrefslogtreecommitdiff
path: root/rotord/libavwrapper.cpp
diff options
context:
space:
mode:
authorTim Redfern <tim@herge.(none)>2013-06-25 19:42:30 +0100
committerTim Redfern <tim@herge.(none)>2013-06-25 19:42:30 +0100
commit1daee727f5d47681a73417a469d71673e1a0827c (patch)
tree4183a04deb54a69a07d73d2ea38f61cb39ab62d3 /rotord/libavwrapper.cpp
parentf191b170379e5ae7f237aa2f7adae5f387caaa35 (diff)
pesky youtube movies
Diffstat (limited to 'rotord/libavwrapper.cpp')
-rwxr-xr-xrotord/libavwrapper.cpp17
1 files changed, 12 insertions, 5 deletions
diff --git a/rotord/libavwrapper.cpp b/rotord/libavwrapper.cpp
index 21a329c..7f99668 100755
--- a/rotord/libavwrapper.cpp
+++ b/rotord/libavwrapper.cpp
@@ -127,7 +127,7 @@ libav::decoder::decoder(PixelFormat pixelFormat)
void libav::decoder::cleanup(){
-
+
mutex.lock();
if (NULL != Sctx) {
sws_freeContext(Sctx);
@@ -382,11 +382,18 @@ bool libav::decoder::readNextFrameWithPacket(int targetFrameIndex, AVPacket& pac
#endif
if(!finished) {
if (packet.pts == AV_NOPTS_VALUE)
- throw std::runtime_error("");
+ packet.pts = 0;
+ //throw std::runtime_error("");
+ //why does it want to throw an error here, isn't the frame succesfully decoded?
+ //
+ //when we allow these packets through we get
+ //[swscaler @ 0x9ef0c80] bad src image pointers
+ //trying to ignore timestamp below
if (packet.size == 0) // packet.size==0 usually means EOF
break;
}
- } while ( (!finished) || (pYuv->best_effort_timestamp < targetFrameIndex));
+ //} while ( (!finished) || (pYuv->best_effort_timestamp < targetFrameIndex));
+ } while (!finished);
av_free_packet(&packet);
@@ -653,7 +660,7 @@ libav::encoder::encoder(const char * file_name, int width, int height, float _fr
if (aCtx->codec->capabilities & CODEC_CAP_VARIABLE_FRAME_SIZE)
audio_input_frame_size = 10000;
else
- audio_input_frame_size = aCtx->frame_size;
+ audio_input_frame_size = aCtx->frame_size;
if (container->oformat->flags & AVFMT_GLOBALHEADER)
@@ -1581,7 +1588,7 @@ bool libav::audioloader::setup(const std::string &filename){
//where is audio grunge coming from? signed/ unsigned? doesn't seem to be byte order..
// add +1 to data subscript with no effect
-
+
//which? must be determined by format or layout of the channels
//ALSO some kind of HEINOUS memory leak??
buffer[((sample_end+i)*frame->channels)+j]=s;