* Copyright (C) 2003-2004 Ushodaya Enterprises Limited
* Author: Charles Yates <charles.yates@pandora.be>
*
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
*
- * This program is distributed in the hope that it will be useful,
+ * This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
*
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
-#include "filter_avdeinterlace.h"
-
+#include <framework/mlt_filter.h>
#include <framework/mlt_frame.h>
#include <string.h>
#ifdef USE_MMX
#include "mmx.h"
+#else
+#define MAX_NEG_CROP 1024
+extern uint8_t ff_cropTbl[256 + 2 * MAX_NEG_CROP];
#endif
#ifdef USE_MMX
movd_r2m(mm1,dst[0]);
#endif
+#if LIBAVUTIL_VERSION_INT < (50<<16)
+#define PIX_FMT_YUYV422 PIX_FMT_YUV422
+#endif
+
/* filter parameters: [-1 4 2 4 -1] // 8 */
static inline void deinterlace_line(uint8_t *dst,
const uint8_t *lum_m4, const uint8_t *lum_m3,
int size)
{
#ifndef USE_MMX
- uint8_t *cm = cropTbl + MAX_NEG_CROP;
+ uint8_t *cm = ff_cropTbl + MAX_NEG_CROP;
int sum;
for(;size > 0;size--) {
int size)
{
#ifndef USE_MMX
- uint8_t *cm = cropTbl + MAX_NEG_CROP;
+ uint8_t *cm = ff_cropTbl + MAX_NEG_CROP;
int sum;
for(;size > 0;size--) {
if (pix_fmt != PIX_FMT_YUV420P &&
pix_fmt != PIX_FMT_YUV422P &&
- pix_fmt != PIX_FMT_YUV422 &&
+ pix_fmt != PIX_FMT_YUYV422 &&
pix_fmt != PIX_FMT_YUV444P &&
pix_fmt != PIX_FMT_YUV411P)
return -1;
if ((width & 3) != 0 || (height & 3) != 0)
return -1;
- if ( pix_fmt != PIX_FMT_YUV422 )
+ if ( pix_fmt != PIX_FMT_YUYV422 )
{
for(i=0;i<3;i++) {
if (i == 1) {
else {
if (src == dst) {
deinterlace_bottom_field_inplace(dst->data[0], dst->linesize[0],
- width, height);
+ width<<1, height);
} else {
deinterlace_bottom_field(dst->data[0],dst->linesize[0],
src->data[0], src->linesize[0],
- width, height);
+ width<<1, height);
}
}
// Fill the picture
if ( *format == mlt_image_yuv422 )
{
- avpicture_fill( output, *image, PIX_FMT_YUV422, *width, *height );
- mlt_avpicture_deinterlace( output, output, PIX_FMT_YUV422, *width, *height );
+ avpicture_fill( output, *image, PIX_FMT_YUYV422, *width, *height );
+ mlt_avpicture_deinterlace( output, output, PIX_FMT_YUYV422, *width, *height );
}
// Free the picture