-
Notifications
You must be signed in to change notification settings - Fork 7.4k
[libmpeg2] Add new port #8871
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
[libmpeg2] Add new port #8871
Changes from all commits
Commits
Show all changes
3 commits
Select commit
Hold shift + click to select a range
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
146 changes: 146 additions & 0 deletions
146
ports/libmpeg2/0001-Add-naive-MSVC-support-to-sources.patch
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,146 @@ | ||
| From ed3b6e4bca1fe5211e3d7ca06bbbf9b161c8bc19 Mon Sep 17 00:00:00 2001 | ||
| From: Michal Janiszewski <janisozaur@gmail.com> | ||
| Date: Sat, 2 Nov 2019 14:50:53 -0700 | ||
| Subject: [PATCH] Add naive MSVC support to sources | ||
|
|
||
| --- | ||
| libmpeg2/convert/rgb.c | 2 +- | ||
| libmpeg2/cpu_accel.c | 4 ++-- | ||
| libmpeg2/cpu_state.c | 4 ++-- | ||
| libmpeg2/idct.c | 2 +- | ||
| libmpeg2/motion_comp.c | 2 +- | ||
| libvo/video_out_dx.c | 6 +++--- | ||
| vc++/config.h | 2 ++ | ||
| 7 files changed, 12 insertions(+), 10 deletions(-) | ||
|
|
||
| diff --git a/libmpeg2/convert/rgb.c b/libmpeg2/convert/rgb.c | ||
| index 8863b0b..db6f4e3 100644 | ||
| --- a/libmpeg2/convert/rgb.c | ||
| +++ b/libmpeg2/convert/rgb.c | ||
| @@ -499,7 +499,7 @@ static int rgb_internal (mpeg2convert_rgb_order_t order, unsigned int bpp, | ||
| int convert420 = 0; | ||
| int rgb_stride_min = ((bpp + 7) >> 3) * seq->width; | ||
|
|
||
| -#ifdef ARCH_X86 | ||
| +#if !defined(_MSC_VER) && defined(ARCH_X86) | ||
| if (!copy && (accel & MPEG2_ACCEL_X86_MMXEXT)) { | ||
| convert420 = 0; | ||
| copy = mpeg2convert_rgb_mmxext (order, bpp, seq); | ||
| diff --git a/libmpeg2/cpu_accel.c b/libmpeg2/cpu_accel.c | ||
| index 9b24610..a922df1 100644 | ||
| --- a/libmpeg2/cpu_accel.c | ||
| +++ b/libmpeg2/cpu_accel.c | ||
| @@ -29,7 +29,7 @@ | ||
| #include "attributes.h" | ||
| #include "mpeg2_internal.h" | ||
|
|
||
| -#if defined(ARCH_X86) || defined(ARCH_X86_64) | ||
| +#if !defined(_MSC_VER) && (defined(ARCH_X86) || defined(ARCH_X86_64)) | ||
| static inline uint32_t arch_accel (uint32_t accel) | ||
| { | ||
| if (accel & (MPEG2_ACCEL_X86_3DNOW | MPEG2_ACCEL_X86_MMXEXT)) | ||
| @@ -253,7 +253,7 @@ static inline uint32_t arch_accel (uint32_t accel) | ||
|
|
||
| uint32_t mpeg2_detect_accel (uint32_t accel) | ||
| { | ||
| -#if defined (ARCH_X86) || defined (ARCH_X86_64) || defined (ARCH_PPC) || defined (ARCH_ALPHA) || defined (ARCH_SPARC) | ||
| +#if !defined(_MSC_VER) && (defined (ARCH_X86) || defined (ARCH_X86_64) || defined (ARCH_PPC) || defined (ARCH_ALPHA) || defined (ARCH_SPARC)) | ||
| accel = arch_accel (accel); | ||
| #endif | ||
| return accel; | ||
| diff --git a/libmpeg2/cpu_state.c b/libmpeg2/cpu_state.c | ||
| index 2f2f64a..f4966c1 100644 | ||
| --- a/libmpeg2/cpu_state.c | ||
| +++ b/libmpeg2/cpu_state.c | ||
| @@ -36,7 +36,7 @@ | ||
| void (* mpeg2_cpu_state_save) (cpu_state_t * state) = NULL; | ||
| void (* mpeg2_cpu_state_restore) (cpu_state_t * state) = NULL; | ||
|
|
||
| -#if defined(ARCH_X86) || defined(ARCH_X86_64) | ||
| +#if !defined(_MSC_VER) && (defined(ARCH_X86) || defined(ARCH_X86_64)) | ||
| static void state_restore_mmx (cpu_state_t * state) | ||
| { | ||
| emms (); | ||
| @@ -115,7 +115,7 @@ static void state_restore_altivec (cpu_state_t * state) | ||
|
|
||
| void mpeg2_cpu_state_init (uint32_t accel) | ||
| { | ||
| -#if defined(ARCH_X86) || defined(ARCH_X86_64) | ||
| +#if !defined(_MSC_VER) && (defined(ARCH_X86) || defined(ARCH_X86_64)) | ||
| if (accel & MPEG2_ACCEL_X86_MMX) { | ||
| mpeg2_cpu_state_restore = state_restore_mmx; | ||
| } | ||
| diff --git a/libmpeg2/idct.c b/libmpeg2/idct.c | ||
| index 81c57e0..a057bf7 100644 | ||
| --- a/libmpeg2/idct.c | ||
| +++ b/libmpeg2/idct.c | ||
| @@ -235,7 +235,7 @@ static void mpeg2_idct_add_c (const int last, int16_t * block, | ||
|
|
||
| void mpeg2_idct_init (uint32_t accel) | ||
| { | ||
| -#ifdef ARCH_X86 | ||
| +#if !defined(_MSC_VER) && defined(ARCH_X86) | ||
| if (accel & MPEG2_ACCEL_X86_SSE2) { | ||
| mpeg2_idct_copy = mpeg2_idct_copy_sse2; | ||
| mpeg2_idct_add = mpeg2_idct_add_sse2; | ||
| diff --git a/libmpeg2/motion_comp.c b/libmpeg2/motion_comp.c | ||
| index 7aed113..b00a32d 100644 | ||
| --- a/libmpeg2/motion_comp.c | ||
| +++ b/libmpeg2/motion_comp.c | ||
| @@ -33,7 +33,7 @@ mpeg2_mc_t mpeg2_mc; | ||
|
|
||
| void mpeg2_mc_init (uint32_t accel) | ||
| { | ||
| -#ifdef ARCH_X86 | ||
| +#if !defined(_MSC_VER) && defined(ARCH_X86) | ||
| if (accel & MPEG2_ACCEL_X86_MMXEXT) | ||
| mpeg2_mc = mpeg2_mc_mmxext; | ||
| else if (accel & MPEG2_ACCEL_X86_3DNOW) | ||
| diff --git a/libvo/video_out_dx.c b/libvo/video_out_dx.c | ||
| index 36de68a..0797cdc 100644 | ||
| --- a/libvo/video_out_dx.c | ||
| +++ b/libvo/video_out_dx.c | ||
| @@ -82,7 +82,7 @@ static void update_overlay (dx_instance_t * instance) | ||
| dwFlags, &ddofx); | ||
| } | ||
|
|
||
| -static long FAR PASCAL event_procedure (HWND hwnd, UINT message, | ||
| +static LRESULT FAR PASCAL event_procedure (HWND hwnd, UINT message, | ||
| WPARAM wParam, LPARAM lParam) | ||
| { | ||
| RECT rect_window; | ||
| @@ -92,7 +92,7 @@ static long FAR PASCAL event_procedure (HWND hwnd, UINT message, | ||
| switch (message) { | ||
|
|
||
| case WM_WINDOWPOSCHANGED: | ||
| - instance = (dx_instance_t *) GetWindowLong (hwnd, GWL_USERDATA); | ||
| + instance = (dx_instance_t *) GetWindowLongPtr (hwnd, GWLP_USERDATA); | ||
|
|
||
| /* update the window position and size */ | ||
| point_window.x = 0; | ||
| @@ -173,7 +173,7 @@ static int create_window (dx_instance_t * instance) | ||
| /* store a directx_instance pointer into the window local storage | ||
| * (for later use in event_handler). | ||
| * We need to use SetWindowLongPtr when it is available in mingw */ | ||
| - SetWindowLong (instance->window, GWL_USERDATA, (LONG) instance); | ||
| + SetWindowLongPtr (instance->window, GWLP_USERDATA, (LONG_PTR) instance); | ||
|
|
||
| ShowWindow (instance->window, SW_SHOW); | ||
|
|
||
| diff --git a/vc++/config.h b/vc++/config.h | ||
| index 93719f0..a03cce6 100644 | ||
| --- a/vc++/config.h | ||
| +++ b/vc++/config.h | ||
| @@ -16,7 +16,9 @@ | ||
| /* #undef ARCH_SPARC */ | ||
|
|
||
| /* x86 architecture */ | ||
| +#if defined(_M_AMD64) || defined(_M_IX86) | ||
| #define ARCH_X86 | ||
| +#endif | ||
|
|
||
| /* maximum supported data alignment */ | ||
| /* #undef ATTRIBUTE_ALIGNED_MAX */ | ||
| -- | ||
| 2.25.0 | ||
|
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,108 @@ | ||
| cmake_minimum_required(VERSION 3.2) | ||
| project(libmpeg2) | ||
|
|
||
| option(TOOLS "Build libmpeg2 tools" OFF) | ||
|
|
||
| set(MPEG2_SOURCE_FILES | ||
| libmpeg2/alloc.c | ||
| libmpeg2/cpu_accel.c | ||
| libmpeg2/cpu_state.c | ||
| libmpeg2/decode.c | ||
| libmpeg2/header.c | ||
| libmpeg2/idct.c | ||
| libmpeg2/idct_alpha.c | ||
| libmpeg2/idct_altivec.c | ||
| #libmpeg2/idct_mmx.c | ||
| libmpeg2/motion_comp.c | ||
| libmpeg2/motion_comp_alpha.c | ||
| libmpeg2/motion_comp_altivec.c | ||
| libmpeg2/motion_comp_arm.c | ||
| #libmpeg2/motion_comp_mmx.c | ||
| libmpeg2/motion_comp_vis.c | ||
| libmpeg2/slice.c | ||
| ) | ||
| set(VO_SOURCE_FILES | ||
| libvo/video_out.c | ||
| libvo/video_out_dx.c | ||
| libvo/video_out_null.c | ||
| libvo/video_out_pgm.c | ||
| libvo/video_out_sdl.c | ||
| libvo/video_out_x11.c | ||
| ) | ||
| set(MPEG2_CONVERT_SOURCES | ||
| libmpeg2/convert/rgb.c | ||
| #libmpeg2/convert/rgb_mmx.c | ||
| libmpeg2/convert/rgb_vis.c | ||
| libmpeg2/convert/uyvy.c | ||
| ) | ||
| set(GETOPT_FILES | ||
| src/getopt.c | ||
| ) | ||
| set(HEADERS | ||
| include/mpeg2.h | ||
| include/mpeg2convert.h | ||
| ) | ||
|
|
||
| add_library(mpeg2 ${MPEG2_SOURCE_FILES}) | ||
| add_library(mpeg2convert ${MPEG2_CONVERT_SOURCES}) | ||
| add_library(getopt STATIC ${GETOPT_FILES}) | ||
| add_library(vo STATIC ${VO_SOURCE_FILES}) | ||
|
|
||
| target_include_directories(mpeg2convert PUBLIC | ||
| "${CMAKE_SOURCE_DIR}/vc++" | ||
| "${CMAKE_SOURCE_DIR}/include" | ||
| ) | ||
| target_include_directories(getopt PUBLIC | ||
| "${CMAKE_SOURCE_DIR}/vc++" | ||
| "${CMAKE_SOURCE_DIR}/include" | ||
| ) | ||
| target_include_directories(vo PUBLIC | ||
| "${CMAKE_SOURCE_DIR}/vc++" | ||
| "${CMAKE_SOURCE_DIR}/include" | ||
| ) | ||
| target_include_directories(mpeg2 PUBLIC | ||
| "${CMAKE_SOURCE_DIR}/vc++" | ||
| "${CMAKE_SOURCE_DIR}/include" | ||
| ) | ||
| target_include_directories(mpeg2 INTERFACE | ||
| "${CMAKE_SOURCE_DIR}/include" | ||
| ) | ||
|
|
||
| target_compile_definitions(getopt PUBLIC HAVE_CONFIG_H) | ||
| target_link_libraries(vo mpeg2convert) | ||
|
|
||
| if (TOOLS) | ||
| add_executable(mpeg2dec src/mpeg2dec.c src/dump_state.c src/gettimeofday.c) | ||
| add_executable(extract_mpeg2 src/extract_mpeg2.c) | ||
| add_executable(corrupt_mpeg2 src/corrupt_mpeg2.c) | ||
|
|
||
| target_compile_definitions(extract_mpeg2 PUBLIC HAVE_CONFIG_H) | ||
| target_compile_definitions(corrupt_mpeg2 PUBLIC HAVE_CONFIG_H) | ||
|
|
||
| target_link_libraries(mpeg2dec PRIVATE getopt vo mpeg2convert mpeg2 gdi32) | ||
| target_link_libraries(extract_mpeg2 PRIVATE getopt) | ||
| target_link_libraries(corrupt_mpeg2 PRIVATE getopt) | ||
|
|
||
| target_include_directories(mpeg2dec PUBLIC | ||
| "${CMAKE_SOURCE_DIR}/vc++" | ||
| "${CMAKE_SOURCE_DIR}/include" | ||
| "${CMAKE_SOURCE_DIR}/src" | ||
| ) | ||
| target_include_directories(extract_mpeg2 PUBLIC | ||
| "${CMAKE_SOURCE_DIR}/vc++" | ||
| "${CMAKE_SOURCE_DIR}/include" | ||
| "${CMAKE_SOURCE_DIR}/src" | ||
| ) | ||
| target_include_directories(corrupt_mpeg2 PUBLIC | ||
| "${CMAKE_SOURCE_DIR}/vc++" | ||
| "${CMAKE_SOURCE_DIR}/include" | ||
| "${CMAKE_SOURCE_DIR}/src" | ||
| ) | ||
| endif (TOOLS) | ||
|
|
||
| install(TARGETS mpeg2 | ||
| EXPORT libmpeg2 | ||
| LIBRARY DESTINATION lib | ||
| ) | ||
|
|
||
| install(FILES ${HEADERS} DESTINATION "include/mpeg2dec") | ||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,8 @@ | ||
| Source: libmpeg2 | ||
| Version: 0.5.1 | ||
| Homepage: http://libmpeg2.sourceforge.net/ | ||
| Description: a free MPEG-2 video stream decoder | ||
| Supports: !(linux|osx|uwp) | ||
|
|
||
janisozaur marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
| Feature: tools | ||
| Description: Build tools provided with libmpeg2 | ||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,38 @@ | ||
| vcpkg_fail_port_install(MESSAGE "${PORT} currently only supports Windows Desktop platform." ON_TARGET "Linux" "OSX" "uwp") | ||
| vcpkg_check_linkage(ONLY_STATIC_LIBRARY) | ||
|
|
||
| # There is archived version of releases available at https://github.com/janisozaur/libmpeg2 | ||
| vcpkg_download_distfile(ARCHIVE | ||
| URLS "http://libmpeg2.sourceforge.net/files/libmpeg2-0.5.1.tar.gz" | ||
| FILENAME "libmpeg2-0.5.1.tar.gz" | ||
| SHA512 3648a2b3d7e2056d5adb328acd2fb983a1fa9a05ccb6f9388cc686c819445421811f42e8439418a0491a13080977f074a0d8bf8fa6bc101ff245ddea65a46fbc | ||
| ) | ||
|
|
||
| vcpkg_extract_source_archive_ex( | ||
| OUT_SOURCE_PATH SOURCE_PATH | ||
| ARCHIVE ${ARCHIVE} | ||
| PATCHES | ||
| 0001-Add-naive-MSVC-support-to-sources.patch | ||
| ) | ||
|
|
||
| file(COPY ${CMAKE_CURRENT_LIST_DIR}/CMakeLists.txt DESTINATION ${SOURCE_PATH}) | ||
|
|
||
| vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS | ||
| FEATURES | ||
| tools TOOLS | ||
| ) | ||
|
|
||
| vcpkg_configure_cmake( | ||
| SOURCE_PATH ${SOURCE_PATH} | ||
| PREFER_NINJA | ||
| OPTIONS ${FEATURE_OPTIONS} | ||
| ) | ||
|
|
||
| vcpkg_install_cmake() | ||
|
|
||
| # # Handle copyright | ||
| file(INSTALL ${SOURCE_PATH}/COPYING DESTINATION ${CURRENT_PACKAGES_DIR}/share/libmpeg2 RENAME copyright) | ||
|
|
||
| file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/include) | ||
|
|
||
| vcpkg_copy_pdbs() |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.