[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: KDE/kdemultimedia
From: Andreas Scherf <ascherfy () googlemail ! com>
Date: 2010-12-10 15:34:50
Message-ID: 20101210153450.13D4CAC8A6 () svn ! kde ! org
[Download RAW message or body]
SVN commit 1205249 by scherfa:
Version 2.0.2
Fixed compilation error against latest ffmpeg
Size of the filmstrip overlay is dependant on thumbnail size
http://reviewboard.kde.org/r/5937/
M +1 -1 CMakeLists.txt
A cmake/modules/FindFFMPEG.cmake
M +0 -11 ffmpegthumbs/CMakeLists.txt
M +4 -0 ffmpegthumbs/ffmpegthumbnailer/ChangeLog
A ffmpegthumbs/ffmpegthumbnailer/filmstrip.h [License: GPL \
(v2+) (wrong address)] M +47 -16 \
ffmpegthumbs/ffmpegthumbnailer/filmstripfilter.cpp M +4 -12 \
ffmpegthumbs/ffmpegthumbnailer/moviedecoder.cpp M +3 -19 \
ffmpegthumbs/ffmpegthumbnailer/moviedecoder.h M +2 -1 \
ffmpegthumbs/ffmpegthumbnailer/videoframe.h M +1 -1 \
ffmpegthumbs/ffmpegthumbnailer/videothumbnailer.h
--- trunk/KDE/kdemultimedia/CMakeLists.txt #1205248:1205249
@@ -17,7 +17,7 @@
alsa_configure_file(${CMAKE_BINARY_DIR}/config-alsa.h)
-macro_optional_find_package(FFmpeg)
+macro_optional_find_package(FFMPEG)
macro_log_feature(FFMPEG_FOUND "FFmpeg" "FFmpeg libraries" "FFmpeg" FALSE \
"http://www.ffmpeg.org" "FFmpeg required for FFMpegVideoPreview backend") \
macro_optional_find_package(Swscale) macro_log_feature(SWSCALE_FOUND \
"swscale" "FFmpeg video scaling libraries" "swscale" FALSE "" "swscale \
required for FFMpegVideoPreview backend")
--- trunk/KDE/kdemultimedia/ffmpegthumbs/CMakeLists.txt #1205248:1205249
@@ -4,15 +4,6 @@
${FFMPEG_INCLUDE_DIR}
)
-if (FFMPEG_INCLUDE_DIR_OLD_STYLE)
- SET( CMAKE_CXX_FLAGS "-D FFMPEG_AVFORMAT_API=1" )
- SET( CMAKE_CXX_FLAGS "-D FFMPEG_AVCODEC_API=1" )
-endif(FFMPEG_INCLUDE_DIR_OLD_STYLE)
-
-if (SWSCALE_INCLUDE_DIR)
- SET( CMAKE_CXX_FLAGS "-D FFMPEG_SWSCALE_API=1" )
-endif(SWSCALE_INCLUDE_DIR)
-
# Certain versions of FFMPEG need this to be defined
SET( CMAKE_CXX_FLAGS "-D __STDC_CONSTANT_MACROS" )
@@ -26,12 +17,10 @@
kde4_add_plugin(ffmpegthumbs ${ffmpegthumbs_PART_SRCS})
-
target_link_libraries(ffmpegthumbs ${KDE4_KIO_LIBS} ${AVUTIL_LIBRARIES} \
${AVFORMAT_LIBRARIES} ${AVCODEC_LIBRARIES} ${SWSCALE_LIBRARIES} )
install(TARGETS ffmpegthumbs DESTINATION ${PLUGIN_INSTALL_DIR})
-
########### install files ###############
install(FILES ffmpegthumbs.desktop DESTINATION ${SERVICES_INSTALL_DIR})
--- trunk/KDE/kdemultimedia/ffmpegthumbs/ffmpegthumbnailer/ChangeLog \
#1205248:1205249 @@ -1,5 +1,9 @@
FFmpegThumbnailer
+version 2.0.2
+- Fixed compilation error against latest ffmpeg
+- Size of the filmstrip overlay is dependant on thumbnail size
+
Version 2.0.1
- Setting the thumbnail size to 0 will use the original video size (thanks \
to John Fremlin)
- Fix for video files containing lots of audio packets before a video \
packet
--- trunk/KDE/kdemultimedia/ffmpegthumbs/ffmpegthumbnailer/filmstripfilter.cpp \
#1205248:1205249 @@ -14,6 +14,7 @@
// along with this program; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 \
USA
+#include "filmstrip.h"
#include "filmstripfilter.h"
namespace ffmpegthumbnailer
@@ -22,23 +23,51 @@
static const int FILMHOLE_WIDTH = 12;
static const int FILMHOLE_HEIGHT = 10;
-static const uint8_t filmHole[FILMHOLE_WIDTH * FILMHOLE_HEIGHT * 3] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
0x00, 0x23, 0x23, 0x23, 0x7a, 0x7a, 0x7a, 0x83, 0x83, 0x83, 0x8c, 0x8c, \
0x8c, 0x90, 0x90, 0x90, 0x8e, 0x8e, 0x8e, 0x52, 0x52, 0x52, 0x00, 0x00, \
0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
0x00, 0x6e, 0x6e, 0x6e, 0x83, 0x83, 0x83, 0x93, 0x93, 0x93, 0xa3, 0xa3, \
0xa3, 0xab, 0xab, 0xab, 0xa8, 0xa8, 0xa8, 0x9b, 0x9b, 0x9b, 0x00, 0x00, \
0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
0x00, 0x72, 0x72, 0x72, 0x8e, 0x8e, 0x8e, 0xa4, 0xa4, 0xa4, 0xbb, 0xbb, \
0xbb, 0xc4, 0xc4, 0xc4, 0xc1, 0xc1, 0xc1, 0xaf, 0xaf, 0xaf, 0x00, 0x00, \
0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
0x00, 0x3e, 0x3e, 0x3e, 0x90, 0x90, 0x90, 0xa6, 0xa6, 0xa6, 0xbe, 0xbe, \
0xbe, 0xc8, 0xc8, 0xc8, 0xc4, 0xc4, 0xc4, 0x8e, 0x8e, 0x8e, 0x00, 0x00, \
0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x07, 0x09, 0x09, 0x09, 0x0a, 0x0a, \
0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, \
0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
0x00
-};
+static const quint8* determineFilmStrip(quint32 videoWidth, quint32& \
filmStripWidth, quint32& filmStripHeight) +{
+ if (videoWidth <= SMALLEST_FILM_STRIP_WIDTH * 2)
+ {
+ return NULL;
+ }
+ if (videoWidth <= 96)
+ {
+ filmStripWidth = filmStripHeight = 4;
+ return filmStrip4;
+ }
+ if (videoWidth <= 192)
+ {
+ filmStripWidth = filmStripHeight = 8;
+ return filmStrip8;
+ }
+
+ if (videoWidth <= 384)
+ {
+ filmStripWidth = filmStripHeight = 16;
+ return filmStrip16;
+ }
+
+ if (videoWidth <= 768)
+ {
+ filmStripWidth = filmStripHeight = 32;
+ return filmStrip32;
+ }
+
+ filmStripWidth = filmStripHeight = 64;
+ return filmStrip64;
+}
+
+
+
void FilmStripFilter::process(VideoFrame& videoFrame)
{
- if (videoFrame.width < FILMHOLE_WIDTH * 2) {
+ quint32 filmStripWidth;
+ quint32 filmStripHeight;
+ const quint8* filmHole = determineFilmStrip(videoFrame.width, \
filmStripWidth, filmStripHeight); +
+ if (!filmHole)
+ {
return;
}
@@ -46,8 +75,10 @@
int filmHoleIndex = 0;
int offset = (videoFrame.width * 3) - 3;
- for (int i = 0; i < videoFrame.height; ++i) {
- for (int j = 0; j < FILMHOLE_WIDTH * 3; j += 3) {
+ for (quint32 i = 0; i < videoFrame.height; ++i)
+ {
+ for (quint32 j = 0; j < filmStripWidth * 3; j+=3)
+ {
int currentFilmHoleIndex = filmHoleIndex + j;
videoFrame.frameData[frameIndex + j] = \
filmHole[currentFilmHoleIndex]; @@ -59,7 +90,7 @@
videoFrame.frameData[frameIndex + offset - j + 2] = \
filmHole[currentFilmHoleIndex + 2]; }
frameIndex += videoFrame.lineSize;
- filmHoleIndex = (i % FILMHOLE_HEIGHT) * FILMHOLE_WIDTH * 3;
+ filmHoleIndex = (i % filmStripHeight) * filmStripWidth * 3;
}
}
--- trunk/KDE/kdemultimedia/ffmpegthumbs/ffmpegthumbnailer/moviedecoder.cpp \
#1205248:1205249 @@ -19,16 +19,8 @@
#include <kdebug.h>
#include <QFileInfo>
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
extern "C" {
-#ifdef FFMPEG_SWSCALE_API
-#include <ffmpeg/swscale.h>
-#else
#include <libswscale/swscale.h>
-#endif
}
using namespace std;
@@ -192,7 +184,7 @@
return;
}
- int64_t timestamp = AV_TIME_BASE * \
static_cast<int64_t>(timeInSeconds); + qint64 timestamp = AV_TIME_BASE * \
static_cast<qint64>(timeInSeconds);
if (timestamp < 0) {
timestamp = 0;
@@ -250,7 +242,7 @@
avcodec_get_frame_defaults(m_pFrame);
- int frameFinished;
+ int frameFinished = 0;
#if LIBAVCODEC_VERSION_MAJOR < 53
int bytesDecoded = avcodec_decode_video(m_pVideoCodecContext, \
m_pFrame, &frameFinished, m_pPacket->data, m_pPacket->size); @@ -364,12 \
+356,12 @@ }
}
-void MovieDecoder::createAVFrame(AVFrame** avFrame, uint8_t** frameBuffer, \
int width, int height, PixelFormat format) +void \
MovieDecoder::createAVFrame(AVFrame** avFrame, quint8** frameBuffer, int \
width, int height, PixelFormat format) {
*avFrame = avcodec_alloc_frame();
int numBytes = avpicture_get_size(format, width, height);
- *frameBuffer = reinterpret_cast<uint8_t*>(av_malloc(numBytes));
+ *frameBuffer = reinterpret_cast<quint8*>(av_malloc(numBytes));
avpicture_fill((AVPicture*) *avFrame, *frameBuffer, format, width, \
height); }
--- trunk/KDE/kdemultimedia/ffmpegthumbs/ffmpegthumbnailer/moviedecoder.h \
#1205248:1205249 @@ -17,30 +17,14 @@
#ifndef MOVIEDECODER_H
#define MOVIEDECODER_H
-#include <string>
-#include <vector>
-
#include "videoframe.h"
+#include <QString>
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
extern "C" {
-#ifdef FFMPEG_AVCODEC_API
-#include <ffmpeg/avcodec.h>
-#else
#include <libavcodec/avcodec.h>
-#endif
-#ifdef FFMPEG_AVFORMAT_API
-#include <ffmpeg/avformat.h>
-#else
#include <libavformat/avformat.h>
-#endif
}
-#include <QString>
-
namespace ffmpegthumbnailer
{
@@ -69,7 +53,7 @@
bool decodeVideoPacket();
bool getVideoPacket();
void convertAndScaleFrame(PixelFormat format, int scaledSize, bool \
maintainAspectRatio, int& scaledWidth, int& scaledHeight);
- void createAVFrame(AVFrame** avFrame, uint8_t** frameBuffer, int \
width, int height, PixelFormat format); + void createAVFrame(AVFrame** \
avFrame, quint8** frameBuffer, int width, int height, \
PixelFormat format);
void calculateDimensions(int squareSize, bool maintainAspectRatio, \
int& destWidth, int& destHeight);
private:
@@ -79,7 +63,7 @@
AVCodec* m_pVideoCodec;
AVStream* m_pVideoStream;
AVFrame* m_pFrame;
- uint8_t* m_pFrameBuffer;
+ quint8* m_pFrameBuffer;
AVPacket* m_pPacket;
bool m_FormatContextWasGiven;
bool m_AllowSeek;
--- trunk/KDE/kdemultimedia/ffmpegthumbs/ffmpegthumbnailer/videoframe.h \
#1205248:1205249 @@ -19,6 +19,7 @@
#include <inttypes.h>
#include <vector>
+#include <QtGlobal>
namespace ffmpegthumbnailer
{
@@ -34,7 +35,7 @@
int height;
int lineSize;
- std::vector<uint8_t> frameData;
+ std::vector<quint8> frameData;
};
}
--- trunk/KDE/kdemultimedia/ffmpegthumbs/ffmpegthumbnailer/videothumbnailer.h \
#1205248:1205249 @@ -67,7 +67,7 @@
private:
int m_ThumbnailSize;
- uint16_t m_SeekPercentage;
+ quint16 m_SeekPercentage;
bool m_OverlayFilmStrip;
bool m_WorkAroundIssues;
bool m_MaintainAspectRatio;
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic