Projects
Essentials
xvid
Sign Up
Log In
Username
Password
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
Expand all
Collapse all
Changes of Revision 10
View file
xvidcore.changes
Changed
@@ -1,4 +1,13 @@ ------------------------------------------------------------------- +Sat Jan 27 13:46:30 UTC 2018 - zaitor@opensuse.org + +- Update to version 1.3.5: + + AmigaOS build patch. + + Support for applevel multithreading mode also for AVI output in + xvid_encraw. + + Set interlacing flag in decoder correctly. + +------------------------------------------------------------------- Tue Dec 20 12:55:03 UTC 2016 - scarabeus@opensuse.org - Cleanup a bit with spec-cleaner
View file
xvidcore.spec
Changed
@@ -18,7 +18,7 @@ %define soname 4 Name: xvidcore -Version: 1.3.4 +Version: 1.3.5 Release: 0 Summary: Xvid is a high quality MPEG-4 ASP video codec License: GPL-2.0+
View file
xvidcore-1.3.4.tar.bz2/ChangeLog -> xvidcore-1.3.5.tar.bz2/ChangeLog
Changed
@@ -1,5 +1,46 @@ # Note that this ChangeLog covers only main changes to the release branch +2017-07-12 08:23 Isibaar + * xvidcore/vfw/src/codec.c: Re-add support to decode raw YV12 + input FourCC video + +2017-01-27 13:43 Isibaar + * xvidcore/dshow/src/CXvidDecoder.cpp: Fix output buffer stride + calculation in MFT + +2016-10-18 22:01 Isibaar + * xvidcore/src/portab.h: AmigaOS patch by Fredrik Wikstrom. + +2016-10-18 22:01 Isibaar + * xvidcore/build/generic/configure.in: AmigaOS patch by Fredrik + Wikstrom. + +2016-09-27 15:39 Isibaar + * xvidcore/vfw/src/codec.c: Debug output only when debug option + enabled. + +2016-01-12 13:55 Isibaar + * xvidcore/dshow/src/CXvidDecoder.cpp: MFT pixel aspect ratio - + backport from HEAD + +2016-01-11 17:02 Isibaar + * xvidcore/dshow/src/CXvidDecoder.cpp: Setting interlaced flag + on output pins - backport from HEAD + +2016-01-08 17:44 Isibaar + * xvidcore/dshow/src/CXvidDecoder.cpp + xvidcore/dshow/src/CXvidDecoder.h: Set interlacing flags in + VIDEOINFOHEADER2 struct of output pin + +2016-01-08 17:40 Isibaar + * xvidcore/src/decoder.c + xvidcore/src/xvid.c + xvidcore/src/xvid.h: Set interlacing flags in decoder + +2015-07-08 17:32 Isibaar + * xvidcore/examples/xvid_encraw.c: Making the applevel + multithreading work also for AVI output + 2015-06-14 21:18 Isibaar * xvidcore/dshow/src/CXvidDecoder.cpp xvidcore/dshow/src/CXvidDecoder.h
View file
xvidcore-1.3.4.tar.bz2/build/generic/configure -> xvidcore-1.3.5.tar.bz2/build/generic/configure
Changed
@@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for Xvid 1.3.4. +# Generated by GNU Autoconf 2.69 for Xvid 1.3.5. # # Report bugs to <xvid-devel@xvid.org>. # @@ -580,8 +580,8 @@ # Identity of this package. PACKAGE_NAME='Xvid' PACKAGE_TARNAME='xvid' -PACKAGE_VERSION='1.3.4' -PACKAGE_STRING='Xvid 1.3.4' +PACKAGE_VERSION='1.3.5' +PACKAGE_STRING='Xvid 1.3.5' PACKAGE_BUGREPORT='xvid-devel@xvid.org' PACKAGE_URL='' @@ -1277,7 +1277,7 @@ # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures Xvid 1.3.4 to adapt to many kinds of systems. +\`configure' configures Xvid 1.3.5 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1343,7 +1343,7 @@ if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of Xvid 1.3.4:";; + short | recursive ) echo "Configuration of Xvid 1.3.5:";; esac cat <<\_ACEOF @@ -1434,7 +1434,7 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -Xvid configure 1.3.4 +Xvid configure 1.3.5 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -1919,7 +1919,7 @@ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by Xvid $as_me 1.3.4, which was +It was created by Xvid $as_me 1.3.5, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -4343,6 +4343,13 @@ STATIC_EXTENSION="a" OBJECT_EXTENSION="o" ;; + amigaos) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: .so .a .o" >&5 + $as_echo ".so .a .o" >&6; } + STATIC_EXTENSION="a" + SHARED_EXTENSION="so" + OBJECT_EXTENSION="o" + ;; *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: Unknown OS - Using .so .a .o" >&5 $as_echo "Unknown OS - Using .so .a .o" >&6; } @@ -4414,6 +4421,16 @@ SPECIFIC_LDFLAGS="-nostart" SPECIFIC_CFLAGS="-fPIC" ;; + amigaos) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5 + $as_echo "ok" >&6; } + STATIC_LIB="libxvidcore.\$(STATIC_EXTENSION)" + SHARED_LIB="libxvidcore.\$(SHARED_EXTENSION).\$(API_MAJOR).\$(API_MINOR)" + SO_API_MAJOR_LINK="libxvidcore.\$(SHARED_EXTENSION).\$(API_MAJOR)" + SO_LINK="libxvidcore.\$(SHARED_EXTENSION)" + SPECIFIC_LDFLAGS="-Wl,-soname,libxvidcore.\$(SHARED_EXTENSION).\$(API_MAJOR) -shared -lc -lm" + SPECIFIC_CFLAGS="-fPIC" + ;; *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: Unknown Platform (Using default -shared -lc -lm)" >&5 $as_echo "Unknown Platform (Using default -shared -lc -lm)" >&6; } @@ -5600,7 +5617,7 @@ # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by Xvid $as_me 1.3.4, which was +This file was extended by Xvid $as_me 1.3.5, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -5653,7 +5670,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -Xvid config.status 1.3.4 +Xvid config.status 1.3.5 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\"
View file
xvidcore-1.3.4.tar.bz2/build/generic/configure.in -> xvidcore-1.3.5.tar.bz2/build/generic/configure.in
Changed
@@ -8,7 +8,7 @@ AC_PREREQ([2.50]) -AC_INIT([Xvid], [1.3.4], [xvid-devel@xvid.org]) +AC_INIT([Xvid], [1.3.5], [xvid-devel@xvid.org]) AC_CONFIG_SRCDIR(configure.in) dnl Do not forget to increase that when needed. @@ -272,6 +272,13 @@ STATIC_EXTENSION="a" OBJECT_EXTENSION="o" ;; + amigaos) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: .so .a .o" >&5 + $as_echo ".so .a .o" >&6; } + STATIC_EXTENSION="a" + SHARED_EXTENSION="so" + OBJECT_EXTENSION="o" + ;; *) AC_MSG_RESULT([Unknown OS - Using .so .a .o]) STATIC_EXTENSION="a" @@ -341,6 +348,16 @@ SPECIFIC_LDFLAGS="-nostart" SPECIFIC_CFLAGS="-fPIC" ;; + amigaos) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5 + $as_echo "ok" >&6; } + STATIC_LIB="libxvidcore.\$(STATIC_EXTENSION)" + SHARED_LIB="libxvidcore.\$(SHARED_EXTENSION).\$(API_MAJOR).\$(API_MINOR)" + SO_API_MAJOR_LINK="libxvidcore.\$(SHARED_EXTENSION).\$(API_MAJOR)" + SO_LINK="libxvidcore.\$(SHARED_EXTENSION)" + SPECIFIC_LDFLAGS="-Wl,-soname,libxvidcore.\$(SHARED_EXTENSION).\$(API_MAJOR) -shared -lc -lm" + SPECIFIC_CFLAGS="-fPIC" + ;; *) AC_MSG_RESULT([Unknown Platform (Using default -shared -lc -lm)]) STATIC_LIB="libxvidcore.\$(STATIC_EXTENSION)"
View file
xvidcore-1.3.4.tar.bz2/dshow/src/CXvidDecoder.cpp -> xvidcore-1.3.5.tar.bz2/dshow/src/CXvidDecoder.cpp
Changed
@@ -20,7 +20,7 @@ * along with this program ; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * - * $Id: CXvidDecoder.cpp 2116 2015-06-15 13:00:46Z Isibaar $ + * $Id: CXvidDecoder.cpp 2156 2017-01-27 13:43:32Z Isibaar $ * ****************************************************************************/ @@ -319,6 +319,7 @@ m_tray_icon = 0; m_startClock = clock(); + interlaced = 0; #if defined(XVID_USE_MFT) InitializeCriticalSection(&m_mft_lock); @@ -728,6 +729,15 @@ vih->dwPictAspectRatioY = abs(m_create.height); forced_ar = false; } + if (interlaced) { + vih->dwInterlaceFlags = AMINTERLACE_IsInterlaced; + if (interlaced > 1) { + vih->dwInterlaceFlags |= AMINTERLACE_Field1First; + } + } + else { + vih->dwInterlaceFlags = 0; + } } else { VIDEOINFOHEADER * vih = (VIDEOINFOHEADER *) mtOut->ReallocFormatBuffer(sizeof(VIDEOINFOHEADER)); @@ -1141,30 +1151,49 @@ { DPRINTF("*** XVID_DEC_DECODE"); return S_FALSE; - } else - if (g_config.aspect_ratio == 0 || g_config.aspect_ratio == 1 && forced_ar == false) { + } else if ((g_config.aspect_ratio == 0 || g_config.aspect_ratio == 1 && forced_ar == false) || !!(interlaced)){ - if (stats.type != XVID_TYPE_NOTHING) { /* dont attempt to set vmr aspect ratio if no frame was returned by decoder */ - // inspired by minolta! works for VMR 7 + 9 - IMediaSample2 *pOut2 = NULL; - AM_SAMPLE2_PROPERTIES outProp2; - if (SUCCEEDED(pOut->QueryInterface(IID_IMediaSample2, (void **)&pOut2)) && - SUCCEEDED(pOut2->GetProperties(FIELD_OFFSET(AM_SAMPLE2_PROPERTIES, tStart), (PBYTE)&outProp2))) - { - CMediaType mtOut2 = m_pOutput->CurrentMediaType(); - VIDEOINFOHEADER2* vihOut2 = (VIDEOINFOHEADER2*)mtOut2.Format(); - - if (*mtOut2.FormatType() == FORMAT_VideoInfo2 && - vihOut2->dwPictAspectRatioX != ar_x && vihOut2->dwPictAspectRatioY != ar_y) + if (stats.type != XVID_TYPE_NOTHING) { /* dont attempt to set vmr aspect ratio if no frame was returned by decoder */ + // inspired by minolta! works for VMR 7 + 9 + IMediaSample2 *pOut2 = NULL; + AM_SAMPLE2_PROPERTIES outProp2; + if (SUCCEEDED(pOut->QueryInterface(IID_IMediaSample2, (void **)&pOut2)) && + SUCCEEDED(pOut2->GetProperties(FIELD_OFFSET(AM_SAMPLE2_PROPERTIES, tStart), (PBYTE)&outProp2))) { - vihOut2->dwPictAspectRatioX = ar_x; - vihOut2->dwPictAspectRatioY = ar_y; - pOut2->SetMediaType(&mtOut2); - m_pOutput->SetMediaType(&mtOut2); + CMediaType mtOut2 = m_pOutput->CurrentMediaType(); + VIDEOINFOHEADER2* vihOut2 = (VIDEOINFOHEADER2*)mtOut2.Format(); + + if (*mtOut2.FormatType() == FORMAT_VideoInfo2) + { + int need_format_change = 0; + + if (vihOut2->dwPictAspectRatioX != ar_x || vihOut2->dwPictAspectRatioY != ar_y) + { + vihOut2->dwPictAspectRatioX = ar_x; + vihOut2->dwPictAspectRatioY = ar_y; + need_format_change = 1; + } + if ((interlaced) && !(vihOut2->dwInterlaceFlags & AMINTERLACE_IsInterlaced)) + { + vihOut2->dwInterlaceFlags = AMINTERLACE_IsInterlaced; + if (interlaced > 2) { + vihOut2->dwInterlaceFlags |= AMINTERLACE_Field1First; + } + need_format_change = 1; + } + else if (!interlaced && !!(vihOut2->dwInterlaceFlags & AMINTERLACE_IsInterlaced)){ + vihOut2->dwInterlaceFlags = 0; + need_format_change = 1; + } + + if (need_format_change) { + pOut2->SetMediaType(&mtOut2); + m_pOutput->SetMediaType(&mtOut2); + } + } + pOut2->Release(); } - pOut2->Release(); } - } } } else @@ -1224,6 +1253,13 @@ ar_y = par_y * stats.data.vol.height; } + if (!!(stats.data.vol.general & XVID_VOL_INTERLACING)) { + interlaced = (stats.data.vop.general & XVID_VOP_TOPFIELDFIRST) ? 2 : 1; + } + else if (interlaced > 0) { + interlaced = 0; + } + m_frame.bitstream = (BYTE*)m_frame.bitstream + length; m_frame.length -= length; goto repeat; @@ -1583,7 +1619,15 @@ } if (SUCCEEDED(hr)) { - hr = pOutputType->SetUINT32(MF_MT_INTERLACE_MODE, MFVideoInterlace_Progressive); + if (interlaced > 1) { + hr = pOutputType->SetUINT32(MF_MT_INTERLACE_MODE, MFVideoInterlace_FieldInterleavedUpperFirst); + } + else if (interlaced) { + hr = pOutputType->SetUINT32(MF_MT_INTERLACE_MODE, MFVideoInterlace_FieldInterleavedLowerFirst); + } + else { + hr = pOutputType->SetUINT32(MF_MT_INTERLACE_MODE, MFVideoInterlace_Progressive); + } } if (SUCCEEDED(hr)) { @@ -1961,6 +2005,8 @@ HRESULT hr = S_OK; IMFMediaBuffer *pBuffer; + int need_format_change = 0; + if (SUCCEEDED(hr)) { hr = pSample->ConvertToContiguousBuffer(&pBuffer); } @@ -2044,9 +2090,21 @@ par_y = PARS[stats.data.vol.par-1][1]; } - ar_x = par_x * stats.data.vol.width; - ar_y = par_y * stats.data.vol.height; /* TODO: Actually set the newly determined AR on the output sample type - or it'll have no effect at all... */ + ar_x = par_x; + ar_y = par_y; + + need_format_change = 1; + } + + if (!!(stats.data.vol.general & XVID_VOL_INTERLACING)) { + interlaced = (stats.data.vop.general & XVID_VOP_TOPFIELDFIRST) ? 2 : 1; + need_format_change = 1; + } + else { + if (interlaced > 0) { + interlaced = 0; + need_format_change = 1; + } } m_frame.bitstream = (BYTE*)m_frame.bitstream + length; @@ -2075,6 +2133,33 @@ } } + if (need_format_change) { + IMFMediaType *pOutputType = NULL; + hr = MFTGetOutputCurrentType(0, &pOutputType); + + if (SUCCEEDED(hr)) { + if (interlaced > 1) { + hr = pOutputType->SetUINT32(MF_MT_INTERLACE_MODE, MFVideoInterlace_FieldInterleavedUpperFirst); + } + else if (interlaced) { + hr = pOutputType->SetUINT32(MF_MT_INTERLACE_MODE, MFVideoInterlace_FieldInterleavedLowerFirst); + } + else { + hr = pOutputType->SetUINT32(MF_MT_INTERLACE_MODE, MFVideoInterlace_Progressive); + } + } + + if (SUCCEEDED(hr)) { + hr = MFSetAttributeRatio(pOutputType, MF_MT_PIXEL_ASPECT_RATIO, ar_x, ar_y); + } + + if (SUCCEEDED(hr)) { + MFTSetOutputType(0, pOutputType, 0); + } + + if (pOutputType) pOutputType->Release(); + } + LeaveCriticalSection(&m_mft_lock); return hr; @@ -2108,7 +2193,7 @@ BYTE *Dst = NULL; DWORD buffer_size; - LONG stride = m_create.width; + LONG stride = (m_pOutputTypeBPP < 15) ? CALC_BI_STRIDE(m_create.width, 8) : CALC_BI_STRIDE(m_create.width, m_pOutputTypeBPP); IMFMediaBuffer *pOutput = NULL; IMF2DBuffer *pOutput2D = NULL; @@ -2151,7 +2236,7 @@ convert.width = m_create.width; convert.height = m_create.height; - convert.interlacing = 0; + convert.interlacing = (interlaced > 0) ? 1 : 0; if (m_frame.output.plane[1] != NULL && Dst != NULL && xvid_global_func != NULL) if (xvid_global_func(0, XVID_GBL_CONVERT, &convert, NULL) < 0) /* CSP convert into output buffer */
View file
xvidcore-1.3.4.tar.bz2/dshow/src/CXvidDecoder.h -> xvidcore-1.3.5.tar.bz2/dshow/src/CXvidDecoder.h
Changed
@@ -19,7 +19,7 @@ * along with this program ; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * - * $Id: CXvidDecoder.h 2114 2015-06-14 19:18:14Z Isibaar $ + * $Id: CXvidDecoder.h 2131 2016-01-08 17:44:53Z Isibaar $ * ****************************************************************************/ @@ -166,6 +166,7 @@ int (*xvid_global_func)(void *handle, int opt, void *param1, void *param2); int (*xvid_decore_func)(void *handle, int opt, void *param1, void *param2); int ar_x, ar_y; + int interlaced; bool forced_ar; int rgb_flip;
View file
xvidcore-1.3.4.tar.bz2/examples/xvid_encraw.c -> xvidcore-1.3.5.tar.bz2/examples/xvid_encraw.c
Changed
@@ -22,7 +22,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * - * $Id: xvid_encraw.c 2083 2014-04-08 20:20:17Z Isibaar $ + * $Id: xvid_encraw.c 2129 2015-07-08 17:32:58Z Isibaar $ * ****************************************************************************/ @@ -163,6 +163,8 @@ int stop_num; char *outfilename; /* output filename */ + char *outavifilename; /* output avi filename */ + char *outmkvfilename; /* output mkv filename */ char *statsfilename1; /* pass1 statsfile */ int input_num; @@ -998,9 +1000,12 @@ return (-1); } #ifdef USE_APP_LEVEL_THREADING - fseek(in_file, 0, SEEK_END); /* Determine input size */ - pos = ftell(in_file); - ARG_MAXFRAMENR = pos / IMAGE_SIZE(XDIM, YDIM); /* PGM, header size ?? */ + { + int pos; + fseek(in_file, 0, SEEK_END); /* Determine input size */ + pos = ftell(in_file); + ARG_MAXFRAMENR = pos / IMAGE_SIZE(XDIM, YDIM); /* PGM, header size ?? */ + } #endif fclose(in_file); } @@ -1031,8 +1036,7 @@ #ifdef USE_APP_LEVEL_THREADING if (ARG_INPUTFILE == NULL || strcmp(ARG_INPUTFILE, "stdin") == 0 || ARG_NUM_APP_THREADS <= 1 || ARG_THREADS != 0 || - ARG_TIMECODEFILE != NULL || ARG_AVIOUTPUTFILE != NULL || - ARG_INPUTTYPE == 1 || ARG_MKVOUTPUTFILE != NULL) /* TODO: PGM input */ + ARG_TIMECODEFILE != NULL || ARG_INPUTTYPE == 1) /* TODO: PGM input */ #endif /* Spawn just one encoder instance */ { enc_sequence_data_t enc_data; @@ -1042,6 +1046,8 @@ ARG_NUM_APP_THREADS = 1; enc_data.outfilename = ARG_OUTPUTFILE; + enc_data.outavifilename = ARG_AVIOUTPUTFILE; + enc_data.outmkvfilename = ARG_MKVOUTPUTFILE; enc_data.statsfilename1 = ARG_PASS1; enc_data.start_num = ARG_STARTFRAMENR; enc_data.stop_num = ARG_MAXFRAMENR; @@ -1064,6 +1070,8 @@ enc_sequence_data_t enc_data[MAX_ENC_INSTANCES]; char outfile[MAX_ENC_INSTANCES][256]; + char outavifile[MAX_ENC_INSTANCES][256]; + char outmkvfile[MAX_ENC_INSTANCES][256]; char statsfilename[MAX_ENC_INSTANCES][256]; for (k = 0; k < MAX_ENC_INSTANCES; k++) @@ -1078,13 +1086,34 @@ ARG_THREADS = -1; enc_data[0].outfilename = ARG_OUTPUTFILE; + enc_data[0].outavifilename = ARG_AVIOUTPUTFILE; + enc_data[0].outmkvfilename = ARG_MKVOUTPUTFILE; enc_data[0].statsfilename1 = ARG_PASS1; enc_data[0].start_num = ARG_STARTFRAMENR; enc_data[0].stop_num = (ARG_MAXFRAMENR-ARG_STARTFRAMENR)/ARG_NUM_APP_THREADS; for (k = 1; k < ARG_NUM_APP_THREADS; k++) { - sprintf(outfile[k], "%s.%03d", ARG_OUTPUTFILE, k); - enc_data[k].outfilename = outfile[k]; + if (ARG_OUTPUTFILE) { + sprintf(outfile[k], "%s.%03d", ARG_OUTPUTFILE, k); + enc_data[k].outfilename = outfile[k]; + } + else + enc_data[k].outfilename = NULL; + + if (ARG_AVIOUTPUTFILE) { + sprintf(outavifile[k], "%.*s_%03d.avi", strlen(ARG_AVIOUTPUTFILE) - 4, ARG_AVIOUTPUTFILE, k); + enc_data[k].outavifilename = outavifile[k]; + } + else + enc_data[k].outavifilename = NULL; + + if (ARG_MKVOUTPUTFILE) { + sprintf(outmkvfile[k], "%.*s_%03d.mkv", strlen(ARG_MKVOUTPUTFILE) - 4, ARG_MKVOUTPUTFILE, k); + enc_data[k].outmkvfilename = outmkvfile[k]; + } + else + enc_data[k].outmkvfilename = NULL; + if (ARG_PASS1) { sprintf(statsfilename[k], "%s.%03d", ARG_PASS1, k); enc_data[k].statsfilename1 = statsfilename[k]; @@ -1229,6 +1258,8 @@ int start_num = h->start_num; int stop_num = h->stop_num; char *outfilename = h->outfilename; + char *outavifilename = h->outavifilename; + char *outmkvfilename = h->outmkvfilename; float *totalPSNR = h->totalPSNR; int input_num; @@ -1445,13 +1476,13 @@ } #ifdef XVID_AVI_OUTPUT - if (ARG_AVIOUTPUTFILE != NULL ) { + if (outavifilename != NULL ) { { /* Open the .avi output then close it */ /* Resets the file size to 0, which AVIFile doesn't seem to do */ FILE *scrub; - if ((scrub = fopen(ARG_AVIOUTPUTFILE, "w+b")) == NULL) { - fprintf(stderr, "Error opening output file %s\n", ARG_AVIOUTPUTFILE); + if ((scrub = fopen(outavifilename, "w+b")) == NULL) { + fprintf(stderr, "Error opening output file %s\n", outavifilename); goto release_all; } else @@ -1462,12 +1493,12 @@ myAVIStreamInfo.fccHandler = MAKEFOURCC('x', 'v', 'i', 'd'); myAVIStreamInfo.dwScale = ARG_DWSCALE; myAVIStreamInfo.dwRate = ARG_DWRATE; - myAVIStreamInfo.dwLength = ARG_MAXFRAMENR; + myAVIStreamInfo.dwLength = (h->stop_num - h->start_num); myAVIStreamInfo.dwQuality = 10000; SetRect(&myAVIStreamInfo.rcFrame, 0, 0, XDIM, YDIM); - if ((avierr=AVIFileOpen(&myAVIFile, ARG_AVIOUTPUTFILE, OF_CREATE|OF_WRITE, NULL))) { - fprintf(stderr, "AVIFileOpen failed opening output file %s, error code %d\n", ARG_AVIOUTPUTFILE, avierr); + if ((avierr=AVIFileOpen(&myAVIFile, outavifilename, OF_CREATE|OF_WRITE, NULL))) { + fprintf(stderr, "AVIFileOpen failed opening output file %s, error code %d\n", outavifilename, avierr); goto release_all; } @@ -1491,20 +1522,20 @@ } #endif #ifdef XVID_MKV_OUTPUT - if (ARG_MKVOUTPUTFILE != NULL) { + if (outmkvfilename != NULL) { { /* Open the .mkv output then close it */ /* Just to make sure we can write to it */ FILE *scrub; - if ((scrub = fopen(ARG_MKVOUTPUTFILE, "w+b")) == NULL) { - fprintf(stderr, "Error opening output file %s\n", ARG_MKVOUTPUTFILE); + if ((scrub = fopen(outmkvfilename, "w+b")) == NULL) { + fprintf(stderr, "Error opening output file %s\n", outmkvfilename); goto release_all; } else fclose(scrub); } - MKVFileOpen(&myMKVFile, ARG_MKVOUTPUTFILE, OF_CREATE|OF_WRITE, NULL); + MKVFileOpen(&myMKVFile, outmkvfilename, OF_CREATE|OF_WRITE, NULL); if (ARG_PAR) { myMKVStreamInfo.display_height = YDIM*height_ratios[ARG_PAR]; myMKVStreamInfo.display_width = XDIM*width_ratios[ARG_PAR]; @@ -1517,7 +1548,7 @@ myMKVStreamInfo.width = XDIM; myMKVStreamInfo.framerate = ARG_DWRATE; myMKVStreamInfo.framescale = ARG_DWSCALE; - myMKVStreamInfo.length = ARG_MAXFRAMENR; + myMKVStreamInfo.length = (h->stop_num - h->start_num); MKVFileCreateStream(myMKVFile, &myMKVStream, &myMKVStreamInfo); } #endif @@ -1557,7 +1588,7 @@ else in_buffer += ((DWORD*)in_buffer)[0]; } else { - if(AVIStreamRead(avi_in_stream, input_num+start_num, 1, in_buffer, 4*XDIM*YDIM, NULL, NULL ) != AVIERR_OK) + if (AVIStreamRead(avi_in_stream, input_num + start_num, 1, in_buffer, 4 * XDIM*YDIM, NULL, NULL) != AVIERR_OK) result = 1; } } else @@ -1683,7 +1714,7 @@ } } else - sprintf(timecode, "%f", ((double)ARG_DWSCALE/ARG_DWRATE)*1000*output_num); + sprintf(timecode, "%f", ((double)ARG_DWSCALE/ARG_DWRATE)*1000*(output_num-start_num)); /* Save single files */ if (ARG_SAVEINDIVIDUAL) { @@ -1694,11 +1725,11 @@ fclose(out); } #ifdef XVID_AVI_OUTPUT - if (ARG_AVIOUTPUTFILE && myAVIStream) { + if (outavifilename && myAVIStream) { int output_frame; if (time_file == NULL) - output_frame = output_num; + output_frame = (output_num-start_num); else { output_frame = (int)(atof(timecode)/1000/((double)ARG_DWSCALE/ARG_DWRATE)+.5); } @@ -1717,7 +1748,7 @@ fwrite(mp4_buffer, 1, m4v_size, out_file); } #ifdef XVID_MKV_OUTPUT - if (ARG_MKVOUTPUTFILE && myMKVStream) { + if (outmkvfilename && myMKVStream) { MKVStreamWrite(myMKVStream, atof(timecode), 1, (ARG_PACKED && fakenvop && (m4v_size <= 8)) ? NULL : mp4_buffer, m4v_size, key ? AVIIF_KEYFRAME : 0, NULL, NULL); } #endif @@ -1778,9 +1809,12 @@ #endif free_all_memory: - free(out_buffer); - free(mp4_buffer); - free(in_buffer); + if (out_buffer) + free(out_buffer); + if (mp4_buffer) + free(mp4_buffer); + if ((in_buffer) && (get_frame == NULL)) + free(in_buffer); } /*****************************************************************************
View file
xvidcore-1.3.4.tar.bz2/src/decoder.c -> xvidcore-1.3.5.tar.bz2/src/decoder.c
Changed
@@ -20,7 +20,7 @@ * along with this program ; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * - * $Id: decoder.c 1985 2011-05-18 09:02:35Z Isibaar $ + * $Id: decoder.c 2130 2016-01-08 17:40:12Z Isibaar $ * ****************************************************************************/ @@ -1647,9 +1647,13 @@ if(stats) { stats->type = XVID_TYPE_VOL; stats->data.vol.general = 0; - /*XXX: if (dec->interlacing) - stats->data.vol.general |= ++INTERLACING; */ - stats->data.vol.width = dec->width; + stats->data.vop.general = 0; + if (dec->interlacing) { + stats->data.vol.general |= XVID_VOL_INTERLACING; + if (dec->top_field_first) { + stats->data.vop.general |= XVID_VOP_TOPFIELDFIRST; + } + } stats->data.vol.width = dec->width; stats->data.vol.height = dec->height; stats->data.vol.par = dec->aspect_ratio; stats->data.vol.par_width = dec->par_width;
View file
xvidcore-1.3.4.tar.bz2/src/portab.h -> xvidcore-1.3.5.tar.bz2/src/portab.h
Changed
@@ -21,7 +21,7 @@ * along with this program ; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * - * $Id: portab.h 1985 2011-05-18 09:02:35Z Isibaar $ + * $Id: portab.h 2145 2016-10-18 22:01:13Z Isibaar $ * ****************************************************************************/ @@ -90,8 +90,15 @@ #elif defined(__amigaos4__) # include <pthread.h> -# include <proto/dos.h> -# define sched_yield() IDOS->Delay(1) +# include <proto/exec.h> + +static __inline void amiga_yield(void) +{ + /* SetTaskPri() on the currently running task triggers a reschedule */ + struct Task *me = IExec->FindTask(NULL); + IExec->SetTaskPri(me, me->tc_Node.ln_Pri); +} +# define sched_yield() amiga_yield() #elif defined(SYS_BEOS)
View file
xvidcore-1.3.4.tar.bz2/src/xvid.c -> xvidcore-1.3.5.tar.bz2/src/xvid.c
Changed
@@ -20,7 +20,7 @@ * along with this program ; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * - * $Id: xvid.c 2123 2015-06-17 19:49:29Z Isibaar $ + * $Id: xvid.c 2130 2016-01-08 17:40:12Z Isibaar $ * ****************************************************************************/ @@ -699,7 +699,7 @@ return XVID_ERR_VERSION; info->actual_version = XVID_VERSION; - info->build = "xvid-1.3.4"; + info->build = "xvid-1.3.5"; info->cpu_flags = detect_cpu_flags(); info->num_threads = 0; /* single-thread */
View file
xvidcore-1.3.4.tar.bz2/src/xvid.h -> xvidcore-1.3.5.tar.bz2/src/xvid.h
Changed
@@ -19,7 +19,7 @@ * along with this program ; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * - * $Id: xvid.h 2123 2015-06-17 19:49:29Z Isibaar $ + * $Id: xvid.h 2130 2016-01-08 17:40:12Z Isibaar $ * ****************************************************************************/ @@ -57,7 +57,7 @@ #define XVID_API_MAJOR(a) (((a)>>16) & 0xff) #define XVID_API_MINOR(a) (((a)>> 0) & 0xff) -#define XVID_VERSION XVID_MAKE_VERSION(1,3,4) +#define XVID_VERSION XVID_MAKE_VERSION(1,3,5) #define XVID_API XVID_MAKE_API(4, 3) /* Bitstream Version
View file
xvidcore-1.3.4.tar.bz2/vfw/src/codec.c -> xvidcore-1.3.5.tar.bz2/vfw/src/codec.c
Changed
@@ -19,7 +19,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: codec.c 1985 2011-05-18 09:02:35Z Isibaar $ + * $Id: codec.c 2160 2017-07-12 08:23:51Z Isibaar $ * *************************************************************************/ @@ -560,10 +560,11 @@ create.num_plugins++; } - plugins[create.num_plugins].func = vfw_debug; - plugins[create.num_plugins].param = NULL; - create.num_plugins++; - + if (codec->config.debug > 0) { + plugins[create.num_plugins].func = vfw_debug; + plugins[create.num_plugins].param = NULL; + create.num_plugins++; + } create.profile = profiles[codec->config.profile].id; create.width = lpbiInput->bmiHeader.biWidth; @@ -933,7 +934,7 @@ if (inhdr->biCompression != FOURCC_XVID && inhdr->biCompression != FOURCC_DIVX && inhdr->biCompression != FOURCC_DX50 && inhdr->biCompression != FOURCC_MP4V && inhdr->biCompression != FOURCC_xvid && inhdr->biCompression != FOURCC_divx && inhdr->biCompression != FOURCC_dx50 && inhdr->biCompression != FOURCC_mp4v && - (in_csp = get_colorspace(inhdr)) != XVID_CSP_YV12) + inhdr->biCompression != FOURCC_YV12 && (in_csp = get_colorspace(inhdr)) != XVID_CSP_YV12) { return ICERR_BADFORMAT; }
Locations
Projects
Search
Status Monitor
Help
Open Build Service
OBS Manuals
API Documentation
OBS Portal
Reporting a Bug
Contact
Mailing List
Forums
Chat (IRC)
Twitter
Open Build Service (OBS)
is an
openSUSE project
.