Skip to content

Commit

Permalink
phash: Fix compilation with ffmpeg <= 0.7
Browse files Browse the repository at this point in the history
Patched formula to compile phash against ffmpeg <= 0.7.
Credits go to Andreas Moog who first submitted the patch to
https://launchpad.net/ubuntu/+source/libphash/0.9.4-1.2

Fixes Homebrew#7221.
Closes Homebrew#9343.

Signed-off-by: Misty De Meo <mistydemeo@gmail.com>
  • Loading branch information
Wulfshade authored and wesen committed Jan 8, 2012
1 parent ee1ef73 commit eaad54b
Showing 1 changed file with 93 additions and 0 deletions.
93 changes: 93 additions & 0 deletions Library/Formula/phash.rb
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,12 @@ def options
]
end

# fix compilation on ffmpeg <= 0.7
# source: https://launchpad.net/ubuntu/+source/libphash/0.9.4-1.2
def patches
DATA
end

def install
args = ["--disable-debug", "--disable-dependency-tracking",
"--prefix=#{prefix}",
Expand All @@ -36,3 +42,90 @@ def install
system "make install"
end
end

__END__
--- a/src/cimgffmpeg.cpp
+++ b/src/cimgffmpeg.cpp
@@ -67,7 +67,7 @@
// Find the video stream
for(i=0; i<st_info->pFormatCtx->nb_streams; i++)
{
- if(st_info->pFormatCtx->streams[i]->codec->codec_type==CODEC_TYPE_VIDEO)
+ if(st_info->pFormatCtx->streams[i]->codec->codec_type==AVMEDIA_TYPE_VIDEO)
{
st_info->videoStream=i;
break;
@@ -123,6 +123,10 @@
int size = 0;

AVPacket packet;
+
+ AVPacket avpacket;
+ av_init_packet(&avpacket);
+
int result = 1;
CImg<uint8_t> next_image;
SwsContext *c = sws_getContext(st_info->pCodecCtx->width, st_info->pCodecCtx->height, st_info->pCodecCtx->pix_fmt, st_info->width, st_info->height, ffmpeg_pixfmt , SWS_BICUBIC, NULL, NULL, NULL);
@@ -131,7 +135,10 @@
if (result < 0)
break;
if(packet.stream_index==st_info->videoStream) {
- avcodec_decode_video(st_info->pCodecCtx, pFrame, &frameFinished,packet.data, packet.size);
+ avpacket.data = packet.data;
+ avpacket.size = packet.size;
+ avpacket.flags = AV_PKT_FLAG_KEY;
+ avcodec_decode_video2(st_info->pCodecCtx, pFrame, &frameFinished, &avpacket);
if(frameFinished) {
if (st_info->current_index == st_info->next_index){
st_info->next_index += st_info->step;
@@ -213,7 +220,7 @@
// Find the video stream
for(i=0; i< st_info->pFormatCtx->nb_streams; i++)
{
- if(st_info->pFormatCtx->streams[i]->codec->codec_type==CODEC_TYPE_VIDEO)
+ if(st_info->pFormatCtx->streams[i]->codec->codec_type==AVMEDIA_TYPE_VIDEO)
{
st_info->videoStream=i;
break;
@@ -268,6 +275,10 @@
int frameFinished;
int size = 0;
AVPacket packet;
+
+ AVPacket avpacket;
+ av_init_packet(&avpacket);
+
int result = 1;
CImg<uint8_t> next_image;
SwsContext *c = sws_getContext(st_info->pCodecCtx->width, st_info->pCodecCtx->height, st_info->pCodecCtx->pix_fmt, st_info->width, st_info->height, ffmpeg_pixfmt , SWS_BICUBIC, NULL, NULL, NULL);
@@ -279,8 +290,10 @@
break;
if(packet.stream_index == st_info->videoStream) {

- avcodec_decode_video(st_info->pCodecCtx, pFrame, &frameFinished,
- packet.data,packet.size);
+ avpacket.data = packet.data;
+ avpacket.size = packet.size;
+ avpacket.flags = AV_PKT_FLAG_KEY;
+ avcodec_decode_video2(st_info->pCodecCtx, pFrame, &frameFinished, &avpacket);

if(frameFinished) {
if (st_info->current_index == st_info->next_index)
@@ -365,7 +378,7 @@
int videoStream=-1;
for(unsigned int i=0; i<pFormatCtx->nb_streams; i++)
{
- if(pFormatCtx->streams[i]->codec->codec_type==CODEC_TYPE_VIDEO)
+ if(pFormatCtx->streams[i]->codec->codec_type==AVMEDIA_TYPE_VIDEO)
{
videoStream=i;
break;
@@ -407,7 +420,7 @@
int videoStream=-1;
for(unsigned int i=0; i<pFormatCtx->nb_streams; i++)
{
- if(pFormatCtx->streams[i]->codec->codec_type==CODEC_TYPE_VIDEO)
+ if(pFormatCtx->streams[i]->codec->codec_type==AVMEDIA_TYPE_VIDEO)
{
videoStream=i;
break;

0 comments on commit eaad54b

Please sign in to comment.