From 1a3589e689b355c269bc5295542590b4c6827d32 Mon Sep 17 00:00:00 2001 From: Joshua Moerman Date: Mon, 8 Dec 2014 22:54:40 +0100 Subject: [PATCH] Fixes a bug in read_frame --- lib/av/av.cpp | 3 ++- lib/av/av.hpp | 7 +------ lib/fingerprints/wvlt_rgb.hpp | 9 --------- lib/image_io.cpp | 1 - 4 files changed, 3 insertions(+), 17 deletions(-) diff --git a/lib/av/av.cpp b/lib/av/av.cpp index 687ffa9..992e444 100644 --- a/lib/av/av.cpp +++ b/lib/av/av.cpp @@ -53,7 +53,8 @@ namespace av { packet read_frame(format_context& ctx, packet_buffer& p){ - if(!av_read_frame(ctx.get(), &p)){ + auto ret = av_read_frame(ctx.get(), &p); + if(ret < 0){ return {nullptr, &av_free_packet}; } else { return {&p, &av_free_packet}; diff --git a/lib/av/av.hpp b/lib/av/av.hpp index cbcf1c3..8da56f8 100644 --- a/lib/av/av.hpp +++ b/lib/av/av.hpp @@ -4,15 +4,10 @@ extern "C" { #include -#include // only needed for AVCodecID +#include // only needed for AVCodecID and AVPacket -typedef struct AVDictionary AVDictionary; typedef struct AVFormatContext AVFormatContext; typedef struct AVInputFormat AVInputFormat; -typedef struct AVCodecContext AVCodecContext; -typedef struct AVCodec AVCodec; -typedef struct AVPacket AVPacket; -typedef struct AVFrame AVFrame; } #include diff --git a/lib/fingerprints/wvlt_rgb.hpp b/lib/fingerprints/wvlt_rgb.hpp index d202c28..f20bda7 100644 --- a/lib/fingerprints/wvlt_rgb.hpp +++ b/lib/fingerprints/wvlt_rgb.hpp @@ -12,15 +12,6 @@ #include #include -namespace boost { - namespace serialization { - template - void serialize(Archive & ar, std::array & a, const unsigned int /*version*/) { - ar & make_array(a.data(), a.size()); - } - } // namespace serialization -} // namespace boost - namespace fingerprints { struct wvlt_rgb { diff --git a/lib/image_io.cpp b/lib/image_io.cpp index 5a78618..e2ce746 100644 --- a/lib/image_io.cpp +++ b/lib/image_io.cpp @@ -72,7 +72,6 @@ av::frame open_image(std::string const & filename){ // some decoders need extra passes while(!finished) { avcodec_decode_video2(codec_context.get(), frame.get(), &finished, &empty_packet); - av_free_packet(&empty_packet); } return frame;