X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Flib%2Fffmpeg_image_proxy.cc;h=db6059266dc472e13b8908a67f5baf0b2a800618;hb=15a83d720780d58f905d40f8493cdcb86596eaee;hp=3548117ff092e7847975cb9952ec9660ae35ba65;hpb=faf333e4b8b504609c5b721f6752005f071769be;p=dcpomatic.git diff --git a/src/lib/ffmpeg_image_proxy.cc b/src/lib/ffmpeg_image_proxy.cc index 3548117ff..db6059266 100644 --- a/src/lib/ffmpeg_image_proxy.cc +++ b/src/lib/ffmpeg_image_proxy.cc @@ -112,13 +112,14 @@ FFmpegImageProxy::avio_seek (int64_t const pos, int whence) return _pos; } -pair, int> + +ImageProxy::Result FFmpegImageProxy::image (optional) const { boost::mutex::scoped_lock lm (_mutex); if (_image) { - return make_pair (_image, 0); + return Result (_image, 0); } uint8_t* avio_buffer = static_cast (wrapped_av_malloc(4096)); @@ -146,7 +147,11 @@ FFmpegImageProxy::image (optional) const e = avformat_open_input (&format_context, "foo.tga", f, &options); } if (e < 0) { - throw OpenFileError (_path->string(), e, true); + if (_path) { + throw OpenFileError (_path->string(), e, OpenFileError::READ); + } else { + boost::throw_exception(DecodeError(String::compose(_("Could not decode image (%1)"), e))); + } } if (avformat_find_stream_info(format_context, 0) < 0) { @@ -188,7 +193,7 @@ FFmpegImageProxy::image (optional) const av_free (avio_context->buffer); av_free (avio_context); - return make_pair (_image, 0); + return Result (_image, 0); } void @@ -198,7 +203,7 @@ FFmpegImageProxy::add_metadata (xmlpp::Node* node) const } void -FFmpegImageProxy::send_binary (shared_ptr socket) const +FFmpegImageProxy::write_to_socket (shared_ptr socket) const { socket->write (_data.size()); socket->write (_data.data().get(), _data.size());