From 18a4c3245ef7ef285bbb6013f76b4e7255688309 Mon Sep 17 00:00:00 2001 From: Andrea Medeghini Date: Sun, 14 Jul 2024 16:15:07 +0100 Subject: [PATCH] change package name. rename examples and tests modules --- .gitignore | 24 +- Makefile | 4 +- README.md | 45 +- ffmpeg4java-examples/pom.xml | 177 ++++++ .../sample.mpg | Bin .../ffmpeg4java}/ConvertVideoMain.java | 170 ++--- ffmpeg4java-linux-examples/pom.xml | 76 --- ffmpeg4java-linux-test/pom.xml | 50 -- .../ffmpeg4java/linux/FFmpeg4JavaTest.java | 594 ------------------ ffmpeg4java-linux/extract.sh | 2 +- ffmpeg4java-linux/pom.xml | 2 +- .../ffmpeg4java}/AVBufferRef.java | 2 +- .../{linux => }/AVCPBProperties.java | 2 +- .../ffmpeg4java}/AVChannelCustom.java | 2 +- .../{linux => }/AVChannelLayout.java | 2 +- .../ffmpeg4java/{linux => }/AVChapter.java | 2 +- .../ffmpeg4java/{linux => }/AVClass.java | 2 +- .../nextbreakpoint/ffmpeg4java}/AVCodec.java | 2 +- .../{linux => }/AVCodecContext.java | 2 +- .../ffmpeg4java}/AVCodecDescriptor.java | 2 +- .../ffmpeg4java}/AVCodecHWConfig.java | 2 +- .../{linux => }/AVCodecParameters.java | 2 +- .../{linux => }/AVCodecParser.java | 2 +- .../{linux => }/AVCodecParserContext.java | 2 +- .../{linux => }/AVComponentDescriptor.java | 2 +- .../ffmpeg4java/{linux => }/AVDeviceInfo.java | 2 +- .../{linux => }/AVDeviceInfoList.java | 2 +- .../ffmpeg4java}/AVDeviceRect.java | 2 +- .../ffmpeg4java}/AVDictionaryEntry.java | 2 +- .../nextbreakpoint/ffmpeg4java}/AVFilter.java | 2 +- .../{linux => }/AVFilterChain.java | 2 +- .../{linux => }/AVFilterContext.java | 2 +- .../ffmpeg4java}/AVFilterFormatsConfig.java | 2 +- .../{linux => }/AVFilterGraph.java | 2 +- .../{linux => }/AVFilterGraphSegment.java | 2 +- .../ffmpeg4java}/AVFilterInOut.java | 2 +- .../ffmpeg4java/{linux => }/AVFilterLink.java | 2 +- .../{linux => }/AVFilterPadParams.java | 2 +- .../{linux => }/AVFilterParams.java | 2 +- .../{linux => }/AVFormatContext.java | 2 +- .../ffmpeg4java/{linux => }/AVFrame.java | 2 +- .../ffmpeg4java}/AVFrameSideData.java | 2 +- .../ffmpeg4java/{linux => }/AVHWAccel.java | 2 +- .../ffmpeg4java}/AVHWDeviceContext.java | 2 +- .../ffmpeg4java}/AVHWFramesConstraints.java | 2 +- .../{linux => }/AVHWFramesContext.java | 2 +- .../ffmpeg4java/{linux => }/AVIOContext.java | 2 +- .../ffmpeg4java/{linux => }/AVIODirEntry.java | 2 +- .../{linux => }/AVIOInterruptCB.java | 2 +- .../ffmpeg4java/{linux => }/AVIndexEntry.java | 2 +- .../{linux => }/AVInputFormat.java | 2 +- .../ffmpeg4java}/AVOpenCallback.java | 2 +- .../ffmpeg4java/{linux => }/AVOption.java | 2 +- .../ffmpeg4java}/AVOptionArrayDef.java | 2 +- .../{linux => }/AVOptionRange.java | 2 +- .../{linux => }/AVOptionRanges.java | 2 +- .../{linux => }/AVOutputFormat.java | 2 +- .../ffmpeg4java/{linux => }/AVPacket.java | 2 +- .../ffmpeg4java/{linux => }/AVPacketList.java | 2 +- .../{linux => }/AVPacketSideData.java | 2 +- .../ffmpeg4java}/AVPanScan.java | 2 +- .../{linux => }/AVPixFmtDescriptor.java | 2 +- .../ffmpeg4java}/AVProbeData.java | 2 +- .../{linux => }/AVProducerReferenceTime.java | 2 +- .../ffmpeg4java/{linux => }/AVProfile.java | 2 +- .../ffmpeg4java/{linux => }/AVProgram.java | 2 +- .../ffmpeg4java/{linux => }/AVRational.java | 2 +- .../ffmpeg4java}/AVRegionOfInterest.java | 2 +- .../ffmpeg4java/{linux => }/AVStream.java | 2 +- .../{linux => }/AVStreamGroup.java | 2 +- .../{linux => }/AVStreamGroupTileGrid.java | 2 +- .../ffmpeg4java/{linux => }/AVSubtitle.java | 2 +- .../{linux => }/AVSubtitleRect.java | 2 +- .../ffmpeg4java/{linux => }/Libffmpeg.java | 2 +- .../ffmpeg4java/{linux => }/Libffmpeg_1.java | 2 +- .../ffmpeg4java/{linux => }/Libffmpeg_2.java | 2 +- .../ffmpeg4java/{linux => }/RcOverride.java | 2 +- .../ffmpeg4java}/SwsFilter.java | 2 +- .../ffmpeg4java/{linux => }/SwsVector.java | 2 +- .../ffmpeg4java}/av_buffer_create$free.java | 2 +- .../av_buffer_pool_init$alloc.java | 2 +- .../av_buffer_pool_init2$alloc.java | 2 +- .../av_buffer_pool_init2$pool_free.java | 2 +- .../av_format_control_message.java | 2 +- .../ffmpeg4java}/av_intfloat32.java | 2 +- .../{linux => }/av_intfloat64.java | 2 +- .../av_log_set_callback$callback.java | 2 +- .../avcodec_default_execute$func.java | 2 +- .../avcodec_default_execute2$func.java | 2 +- .../{linux => }/avfilter_action_func.java | 2 +- .../ffmpeg4java}/avfilter_execute_func.java | 2 +- .../avio_alloc_context$read_packet.java | 2 +- .../{linux => }/avio_alloc_context$seek.java | 2 +- .../avio_alloc_context$write_packet.java | 2 +- .../ffmpeg4java/{linux => }/max_align_t.java | 2 +- .../src/main/java/module-info.java | 4 +- ffmpeg4java-macos-examples/pom.xml | 76 --- ffmpeg4java-macos-examples/sample.mpg | Bin 776192 -> 0 bytes .../ffmpeg4java/macos/ConvertVideoMain.java | 459 -------------- ffmpeg4java-macos-test/fixture-frame-10.png | Bin 30364 -> 0 bytes ffmpeg4java-macos-test/fixture-frame-20.png | Bin 56100 -> 0 bytes ffmpeg4java-macos-test/fixture-frame-30.png | Bin 43742 -> 0 bytes ffmpeg4java-macos-test/fixture-frame-40.png | Bin 39977 -> 0 bytes ffmpeg4java-macos-test/fixture-video-48.mpg | Bin 776192 -> 0 bytes ffmpeg4java-macos-test/pom.xml | 50 -- ffmpeg4java-macos/extract.sh | 2 +- ffmpeg4java-macos/pom.xml | 2 +- .../ffmpeg4java}/AVBufferRef.java | 2 +- .../{macos => }/AVCPBProperties.java | 2 +- .../ffmpeg4java}/AVChannelCustom.java | 2 +- .../{macos => }/AVChannelLayout.java | 2 +- .../ffmpeg4java/{macos => }/AVChapter.java | 2 +- .../ffmpeg4java/{macos => }/AVClass.java | 2 +- .../nextbreakpoint/ffmpeg4java}/AVCodec.java | 2 +- .../{macos => }/AVCodecContext.java | 2 +- .../ffmpeg4java}/AVCodecDescriptor.java | 2 +- .../ffmpeg4java}/AVCodecHWConfig.java | 2 +- .../{macos => }/AVCodecParameters.java | 2 +- .../{macos => }/AVCodecParser.java | 2 +- .../{macos => }/AVCodecParserContext.java | 2 +- .../{macos => }/AVComponentDescriptor.java | 2 +- .../ffmpeg4java/{macos => }/AVDeviceInfo.java | 2 +- .../{macos => }/AVDeviceInfoList.java | 2 +- .../ffmpeg4java}/AVDeviceRect.java | 2 +- .../ffmpeg4java}/AVDictionaryEntry.java | 2 +- .../nextbreakpoint/ffmpeg4java}/AVFilter.java | 2 +- .../{macos => }/AVFilterChain.java | 2 +- .../{macos => }/AVFilterContext.java | 2 +- .../ffmpeg4java}/AVFilterFormatsConfig.java | 2 +- .../{macos => }/AVFilterGraph.java | 2 +- .../{macos => }/AVFilterGraphSegment.java | 2 +- .../ffmpeg4java}/AVFilterInOut.java | 2 +- .../ffmpeg4java/{macos => }/AVFilterLink.java | 2 +- .../{macos => }/AVFilterPadParams.java | 2 +- .../{macos => }/AVFilterParams.java | 2 +- .../{macos => }/AVFormatContext.java | 2 +- .../ffmpeg4java/{macos => }/AVFrame.java | 2 +- .../ffmpeg4java}/AVFrameSideData.java | 2 +- .../ffmpeg4java/{macos => }/AVHWAccel.java | 2 +- .../ffmpeg4java}/AVHWDeviceContext.java | 2 +- .../ffmpeg4java}/AVHWFramesConstraints.java | 2 +- .../{macos => }/AVHWFramesContext.java | 2 +- .../ffmpeg4java/{macos => }/AVIOContext.java | 2 +- .../ffmpeg4java/{macos => }/AVIODirEntry.java | 2 +- .../{macos => }/AVIOInterruptCB.java | 2 +- .../ffmpeg4java/{macos => }/AVIndexEntry.java | 2 +- .../{macos => }/AVInputFormat.java | 2 +- .../ffmpeg4java}/AVOpenCallback.java | 2 +- .../ffmpeg4java/{macos => }/AVOption.java | 2 +- .../ffmpeg4java}/AVOptionArrayDef.java | 2 +- .../{macos => }/AVOptionRange.java | 2 +- .../{macos => }/AVOptionRanges.java | 2 +- .../{macos => }/AVOutputFormat.java | 2 +- .../ffmpeg4java/{macos => }/AVPacket.java | 2 +- .../ffmpeg4java/{macos => }/AVPacketList.java | 2 +- .../{macos => }/AVPacketSideData.java | 2 +- .../ffmpeg4java}/AVPanScan.java | 2 +- .../{macos => }/AVPixFmtDescriptor.java | 2 +- .../ffmpeg4java}/AVProbeData.java | 2 +- .../{macos => }/AVProducerReferenceTime.java | 2 +- .../ffmpeg4java/{macos => }/AVProfile.java | 2 +- .../ffmpeg4java/{macos => }/AVProgram.java | 2 +- .../ffmpeg4java/{macos => }/AVRational.java | 2 +- .../ffmpeg4java}/AVRegionOfInterest.java | 2 +- .../ffmpeg4java/{macos => }/AVStream.java | 2 +- .../{macos => }/AVStreamGroup.java | 2 +- .../{macos => }/AVStreamGroupTileGrid.java | 2 +- .../ffmpeg4java/{macos => }/AVSubtitle.java | 2 +- .../{macos => }/AVSubtitleRect.java | 2 +- .../ffmpeg4java/{macos => }/Libffmpeg.java | 2 +- .../ffmpeg4java/{macos => }/Libffmpeg_1.java | 2 +- .../ffmpeg4java/{macos => }/Libffmpeg_2.java | 2 +- .../ffmpeg4java/{macos => }/RcOverride.java | 2 +- .../ffmpeg4java}/SwsFilter.java | 2 +- .../ffmpeg4java/{macos => }/SwsVector.java | 2 +- .../ffmpeg4java}/av_buffer_create$free.java | 2 +- .../av_buffer_pool_init$alloc.java | 2 +- .../av_buffer_pool_init2$alloc.java | 2 +- .../av_buffer_pool_init2$pool_free.java | 2 +- .../av_format_control_message.java | 2 +- .../ffmpeg4java}/av_intfloat32.java | 2 +- .../{macos => }/av_intfloat64.java | 2 +- .../av_log_set_callback$callback.java | 2 +- .../avcodec_default_execute$func.java | 2 +- .../avcodec_default_execute2$func.java | 2 +- .../{macos => }/avfilter_action_func.java | 2 +- .../ffmpeg4java}/avfilter_execute_func.java | 2 +- .../avio_alloc_context$read_packet.java | 2 +- .../{macos => }/avio_alloc_context$seek.java | 2 +- .../avio_alloc_context$write_packet.java | 2 +- .../src/main/java/module-info.java | 4 +- .../fixture-frame-10.png | Bin .../fixture-frame-20.png | Bin .../fixture-frame-30.png | Bin .../fixture-frame-40.png | Bin .../fixture-video-48.mpg | Bin ffmpeg4java-tests/pom.xml | 147 +++++ .../ffmpeg4java}/FFmpeg4JavaTest.java | 182 +++--- ffmpeg4java-windows-examples/pom.xml | 76 --- ffmpeg4java-windows-examples/sample.mpg | Bin 776192 -> 0 bytes .../ffmpeg4java/windows/ConvertVideoMain.java | 460 -------------- ffmpeg4java-windows-test/fixture-frame-10.png | Bin 30364 -> 0 bytes ffmpeg4java-windows-test/fixture-frame-20.png | Bin 56100 -> 0 bytes ffmpeg4java-windows-test/fixture-frame-30.png | Bin 43742 -> 0 bytes ffmpeg4java-windows-test/fixture-frame-40.png | Bin 39977 -> 0 bytes ffmpeg4java-windows-test/fixture-video-48.mpg | Bin 776192 -> 0 bytes ffmpeg4java-windows-test/pom.xml | 50 -- .../ffmpeg4java/windows/FFmpeg4JavaTest.java | 594 ------------------ ffmpeg4java-windows/extract.sh | 2 +- ffmpeg4java-windows/pom.xml | 2 +- .../{windows => }/AVBufferRef.java | 2 +- .../{windows => }/AVCPBProperties.java | 2 +- .../{windows => }/AVChannelCustom.java | 2 +- .../{windows => }/AVChannelLayout.java | 2 +- .../ffmpeg4java/{windows => }/AVChapter.java | 2 +- .../ffmpeg4java/{windows => }/AVClass.java | 2 +- .../ffmpeg4java/{windows => }/AVCodec.java | 2 +- .../{windows => }/AVCodecContext.java | 2 +- .../{windows => }/AVCodecDescriptor.java | 2 +- .../{windows => }/AVCodecHWConfig.java | 2 +- .../{windows => }/AVCodecParameters.java | 2 +- .../{windows => }/AVCodecParser.java | 2 +- .../{windows => }/AVCodecParserContext.java | 2 +- .../{windows => }/AVComponentDescriptor.java | 2 +- .../{windows => }/AVDeviceInfo.java | 2 +- .../{windows => }/AVDeviceInfoList.java | 2 +- .../{windows => }/AVDeviceRect.java | 2 +- .../{windows => }/AVDictionaryEntry.java | 2 +- .../ffmpeg4java/{windows => }/AVFilter.java | 2 +- .../{windows => }/AVFilterChain.java | 2 +- .../{windows => }/AVFilterContext.java | 2 +- .../{windows => }/AVFilterFormatsConfig.java | 2 +- .../{windows => }/AVFilterGraph.java | 2 +- .../{windows => }/AVFilterGraphSegment.java | 2 +- .../{windows => }/AVFilterInOut.java | 2 +- .../{windows => }/AVFilterLink.java | 2 +- .../{windows => }/AVFilterPadParams.java | 2 +- .../{windows => }/AVFilterParams.java | 2 +- .../{windows => }/AVFormatContext.java | 2 +- .../ffmpeg4java/{windows => }/AVFrame.java | 2 +- .../{windows => }/AVFrameSideData.java | 2 +- .../ffmpeg4java/{windows => }/AVHWAccel.java | 2 +- .../{windows => }/AVHWDeviceContext.java | 2 +- .../{windows => }/AVHWFramesConstraints.java | 2 +- .../{windows => }/AVHWFramesContext.java | 2 +- .../{windows => }/AVIOContext.java | 2 +- .../{windows => }/AVIODirEntry.java | 2 +- .../{windows => }/AVIOInterruptCB.java | 2 +- .../{windows => }/AVIndexEntry.java | 2 +- .../{windows => }/AVInputFormat.java | 2 +- .../{windows => }/AVOpenCallback.java | 2 +- .../ffmpeg4java/{windows => }/AVOption.java | 2 +- .../{windows => }/AVOptionArrayDef.java | 2 +- .../{windows => }/AVOptionRange.java | 2 +- .../{windows => }/AVOptionRanges.java | 2 +- .../{windows => }/AVOutputFormat.java | 2 +- .../ffmpeg4java/{windows => }/AVPacket.java | 2 +- .../{windows => }/AVPacketList.java | 2 +- .../{windows => }/AVPacketSideData.java | 2 +- .../ffmpeg4java/{windows => }/AVPanScan.java | 2 +- .../{windows => }/AVPixFmtDescriptor.java | 2 +- .../{windows => }/AVProbeData.java | 2 +- .../AVProducerReferenceTime.java | 2 +- .../ffmpeg4java/{windows => }/AVProfile.java | 2 +- .../ffmpeg4java/{windows => }/AVProgram.java | 2 +- .../ffmpeg4java/{windows => }/AVRational.java | 2 +- .../{windows => }/AVRegionOfInterest.java | 2 +- .../ffmpeg4java/{windows => }/AVStream.java | 2 +- .../{windows => }/AVStreamGroup.java | 2 +- .../{windows => }/AVStreamGroupTileGrid.java | 2 +- .../ffmpeg4java/{windows => }/AVSubtitle.java | 2 +- .../{windows => }/AVSubtitleRect.java | 2 +- .../ffmpeg4java/{windows => }/Libffmpeg.java | 2 +- .../{windows => }/Libffmpeg_1.java | 2 +- .../{windows => }/Libffmpeg_2.java | 2 +- .../ffmpeg4java/{windows => }/RcOverride.java | 2 +- .../ffmpeg4java/{windows => }/SwsFilter.java | 2 +- .../ffmpeg4java/{windows => }/SwsVector.java | 2 +- .../{windows => }/av_buffer_create$free.java | 2 +- .../av_buffer_pool_init$alloc.java | 2 +- .../av_buffer_pool_init2$alloc.java | 2 +- .../av_buffer_pool_init2$pool_free.java | 2 +- .../av_format_control_message.java | 2 +- .../{windows => }/av_intfloat32.java | 2 +- .../{windows => }/av_intfloat64.java | 2 +- .../av_log_set_callback$callback.java | 2 +- .../avcodec_default_execute$func.java | 2 +- .../avcodec_default_execute2$func.java | 2 +- .../{windows => }/avfilter_action_func.java | 2 +- .../{windows => }/avfilter_execute_func.java | 2 +- .../avio_alloc_context$read_packet.java | 2 +- .../avio_alloc_context$seek.java | 2 +- .../avio_alloc_context$write_packet.java | 2 +- .../src/main/java/module-info.java | 4 +- pom.xml | 16 +- 295 files changed, 799 insertions(+), 2975 deletions(-) create mode 100644 ffmpeg4java-examples/pom.xml rename {ffmpeg4java-linux-examples => ffmpeg4java-examples}/sample.mpg (100%) rename {ffmpeg4java-linux-examples/src/main/java/com/nextbreakpoint/ffmpeg4java/linux => ffmpeg4java-examples/src/main/java/com/nextbreakpoint/ffmpeg4java}/ConvertVideoMain.java (67%) delete mode 100644 ffmpeg4java-linux-examples/pom.xml delete mode 100644 ffmpeg4java-linux-test/pom.xml delete mode 100644 ffmpeg4java-linux-test/src/test/java/com/nextbreakpoint/ffmpeg4java/linux/FFmpeg4JavaTest.java rename {ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos => ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java}/AVBufferRef.java (99%) rename ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/{linux => }/AVCPBProperties.java (99%) rename {ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos => ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java}/AVChannelCustom.java (99%) rename ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/{linux => }/AVChannelLayout.java (99%) rename ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/{linux => }/AVChapter.java (99%) rename ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/{linux => }/AVClass.java (99%) rename {ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos => ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java}/AVCodec.java (99%) rename ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/{linux => }/AVCodecContext.java (99%) rename {ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos => ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java}/AVCodecDescriptor.java (99%) rename {ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos => ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java}/AVCodecHWConfig.java (99%) rename ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/{linux => }/AVCodecParameters.java (99%) rename ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/{linux => }/AVCodecParser.java (99%) rename ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/{linux => }/AVCodecParserContext.java (99%) rename ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/{linux => }/AVComponentDescriptor.java (99%) rename ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/{linux => }/AVDeviceInfo.java (99%) rename ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/{linux => }/AVDeviceInfoList.java (99%) rename {ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos => ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java}/AVDeviceRect.java (99%) rename {ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos => ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java}/AVDictionaryEntry.java (99%) rename {ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos => ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java}/AVFilter.java (99%) rename ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/{linux => }/AVFilterChain.java (99%) rename ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/{linux => }/AVFilterContext.java (99%) rename {ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos => ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java}/AVFilterFormatsConfig.java (99%) rename ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/{linux => }/AVFilterGraph.java (99%) rename ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/{linux => }/AVFilterGraphSegment.java (99%) rename {ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos => ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java}/AVFilterInOut.java (99%) rename ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/{linux => }/AVFilterLink.java (99%) rename ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/{linux => }/AVFilterPadParams.java (98%) rename ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/{linux => }/AVFilterParams.java (99%) rename ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/{linux => }/AVFormatContext.java (99%) rename ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/{linux => }/AVFrame.java (99%) rename {ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos => ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java}/AVFrameSideData.java (99%) rename ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/{linux => }/AVHWAccel.java (99%) rename {ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos => ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java}/AVHWDeviceContext.java (99%) rename {ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos => ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java}/AVHWFramesConstraints.java (99%) rename ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/{linux => }/AVHWFramesContext.java (99%) rename ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/{linux => }/AVIOContext.java (99%) rename ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/{linux => }/AVIODirEntry.java (99%) rename ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/{linux => }/AVIOInterruptCB.java (99%) rename ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/{linux => }/AVIndexEntry.java (99%) rename ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/{linux => }/AVInputFormat.java (99%) rename {ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos => ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java}/AVOpenCallback.java (99%) rename ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/{linux => }/AVOption.java (99%) rename {ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos => ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java}/AVOptionArrayDef.java (99%) rename ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/{linux => }/AVOptionRange.java (99%) rename ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/{linux => }/AVOptionRanges.java (99%) rename ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/{linux => }/AVOutputFormat.java (99%) rename ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/{linux => }/AVPacket.java (99%) rename ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/{linux => }/AVPacketList.java (99%) rename ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/{linux => }/AVPacketSideData.java (99%) rename {ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos => ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java}/AVPanScan.java (99%) rename ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/{linux => }/AVPixFmtDescriptor.java (99%) rename {ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos => ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java}/AVProbeData.java (99%) rename ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/{linux => }/AVProducerReferenceTime.java (99%) rename ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/{linux => }/AVProfile.java (99%) rename ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/{linux => }/AVProgram.java (99%) rename ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/{linux => }/AVRational.java (98%) rename {ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos => ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java}/AVRegionOfInterest.java (99%) rename ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/{linux => }/AVStream.java (99%) rename ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/{linux => }/AVStreamGroup.java (99%) rename ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/{linux => }/AVStreamGroupTileGrid.java (99%) rename ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/{linux => }/AVSubtitle.java (99%) rename ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/{linux => }/AVSubtitleRect.java (99%) rename ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/{linux => }/Libffmpeg.java (99%) rename ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/{linux => }/Libffmpeg_1.java (99%) rename ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/{linux => }/Libffmpeg_2.java (99%) rename ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/{linux => }/RcOverride.java (99%) rename {ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos => ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java}/SwsFilter.java (99%) rename ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/{linux => }/SwsVector.java (99%) rename {ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos => ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java}/av_buffer_create$free.java (97%) rename ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/{linux => }/av_buffer_pool_init$alloc.java (97%) rename {ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos => ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java}/av_buffer_pool_init2$alloc.java (97%) rename {ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos => ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java}/av_buffer_pool_init2$pool_free.java (97%) rename {ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos => ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java}/av_format_control_message.java (99%) rename {ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos => ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java}/av_intfloat32.java (98%) rename ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/{linux => }/av_intfloat64.java (98%) rename ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/{linux => }/av_log_set_callback$callback.java (97%) rename ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/{linux => }/avcodec_default_execute$func.java (97%) rename ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/{linux => }/avcodec_default_execute2$func.java (97%) rename ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/{linux => }/avfilter_action_func.java (97%) rename {ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos => ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java}/avfilter_execute_func.java (97%) rename {ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos => ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java}/avio_alloc_context$read_packet.java (97%) rename ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/{linux => }/avio_alloc_context$seek.java (97%) rename {ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos => ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java}/avio_alloc_context$write_packet.java (97%) rename ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/{linux => }/max_align_t.java (98%) delete mode 100644 ffmpeg4java-macos-examples/pom.xml delete mode 100644 ffmpeg4java-macos-examples/sample.mpg delete mode 100644 ffmpeg4java-macos-examples/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/ConvertVideoMain.java delete mode 100644 ffmpeg4java-macos-test/fixture-frame-10.png delete mode 100644 ffmpeg4java-macos-test/fixture-frame-20.png delete mode 100644 ffmpeg4java-macos-test/fixture-frame-30.png delete mode 100644 ffmpeg4java-macos-test/fixture-frame-40.png delete mode 100644 ffmpeg4java-macos-test/fixture-video-48.mpg delete mode 100644 ffmpeg4java-macos-test/pom.xml rename {ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux => ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java}/AVBufferRef.java (99%) rename ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/{macos => }/AVCPBProperties.java (99%) rename {ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux => ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java}/AVChannelCustom.java (99%) rename ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/{macos => }/AVChannelLayout.java (99%) rename ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/{macos => }/AVChapter.java (99%) rename ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/{macos => }/AVClass.java (99%) rename {ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux => ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java}/AVCodec.java (99%) rename ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/{macos => }/AVCodecContext.java (99%) rename {ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux => ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java}/AVCodecDescriptor.java (99%) rename {ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux => ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java}/AVCodecHWConfig.java (99%) rename ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/{macos => }/AVCodecParameters.java (99%) rename ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/{macos => }/AVCodecParser.java (99%) rename ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/{macos => }/AVCodecParserContext.java (99%) rename ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/{macos => }/AVComponentDescriptor.java (99%) rename ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/{macos => }/AVDeviceInfo.java (99%) rename ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/{macos => }/AVDeviceInfoList.java (99%) rename {ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux => ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java}/AVDeviceRect.java (99%) rename {ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux => ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java}/AVDictionaryEntry.java (99%) rename {ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux => ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java}/AVFilter.java (99%) rename ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/{macos => }/AVFilterChain.java (99%) rename ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/{macos => }/AVFilterContext.java (99%) rename {ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux => ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java}/AVFilterFormatsConfig.java (99%) rename ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/{macos => }/AVFilterGraph.java (99%) rename ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/{macos => }/AVFilterGraphSegment.java (99%) rename {ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux => ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java}/AVFilterInOut.java (99%) rename ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/{macos => }/AVFilterLink.java (99%) rename ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/{macos => }/AVFilterPadParams.java (98%) rename ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/{macos => }/AVFilterParams.java (99%) rename ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/{macos => }/AVFormatContext.java (99%) rename ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/{macos => }/AVFrame.java (99%) rename {ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux => ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java}/AVFrameSideData.java (99%) rename ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/{macos => }/AVHWAccel.java (99%) rename {ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux => ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java}/AVHWDeviceContext.java (99%) rename {ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux => ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java}/AVHWFramesConstraints.java (99%) rename ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/{macos => }/AVHWFramesContext.java (99%) rename ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/{macos => }/AVIOContext.java (99%) rename ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/{macos => }/AVIODirEntry.java (99%) rename ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/{macos => }/AVIOInterruptCB.java (99%) rename ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/{macos => }/AVIndexEntry.java (99%) rename ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/{macos => }/AVInputFormat.java (99%) rename {ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux => ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java}/AVOpenCallback.java (99%) rename ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/{macos => }/AVOption.java (99%) rename {ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux => ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java}/AVOptionArrayDef.java (99%) rename ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/{macos => }/AVOptionRange.java (99%) rename ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/{macos => }/AVOptionRanges.java (99%) rename ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/{macos => }/AVOutputFormat.java (99%) rename ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/{macos => }/AVPacket.java (99%) rename ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/{macos => }/AVPacketList.java (99%) rename ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/{macos => }/AVPacketSideData.java (99%) rename {ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux => ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java}/AVPanScan.java (99%) rename ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/{macos => }/AVPixFmtDescriptor.java (99%) rename {ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux => ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java}/AVProbeData.java (99%) rename ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/{macos => }/AVProducerReferenceTime.java (99%) rename ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/{macos => }/AVProfile.java (99%) rename ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/{macos => }/AVProgram.java (99%) rename ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/{macos => }/AVRational.java (98%) rename {ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux => ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java}/AVRegionOfInterest.java (99%) rename ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/{macos => }/AVStream.java (99%) rename ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/{macos => }/AVStreamGroup.java (99%) rename ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/{macos => }/AVStreamGroupTileGrid.java (99%) rename ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/{macos => }/AVSubtitle.java (99%) rename ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/{macos => }/AVSubtitleRect.java (99%) rename ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/{macos => }/Libffmpeg.java (99%) rename ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/{macos => }/Libffmpeg_1.java (99%) rename ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/{macos => }/Libffmpeg_2.java (99%) rename ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/{macos => }/RcOverride.java (99%) rename {ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux => ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java}/SwsFilter.java (99%) rename ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/{macos => }/SwsVector.java (99%) rename {ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux => ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java}/av_buffer_create$free.java (97%) rename ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/{macos => }/av_buffer_pool_init$alloc.java (97%) rename {ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux => ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java}/av_buffer_pool_init2$alloc.java (97%) rename {ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux => ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java}/av_buffer_pool_init2$pool_free.java (97%) rename {ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux => ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java}/av_format_control_message.java (99%) rename {ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux => ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java}/av_intfloat32.java (98%) rename ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/{macos => }/av_intfloat64.java (98%) rename ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/{macos => }/av_log_set_callback$callback.java (97%) rename ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/{macos => }/avcodec_default_execute$func.java (97%) rename ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/{macos => }/avcodec_default_execute2$func.java (97%) rename ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/{macos => }/avfilter_action_func.java (97%) rename {ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux => ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java}/avfilter_execute_func.java (97%) rename {ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux => ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java}/avio_alloc_context$read_packet.java (97%) rename ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/{macos => }/avio_alloc_context$seek.java (97%) rename {ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux => ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java}/avio_alloc_context$write_packet.java (97%) rename {ffmpeg4java-linux-test => ffmpeg4java-tests}/fixture-frame-10.png (100%) rename {ffmpeg4java-linux-test => ffmpeg4java-tests}/fixture-frame-20.png (100%) rename {ffmpeg4java-linux-test => ffmpeg4java-tests}/fixture-frame-30.png (100%) rename {ffmpeg4java-linux-test => ffmpeg4java-tests}/fixture-frame-40.png (100%) rename {ffmpeg4java-linux-test => ffmpeg4java-tests}/fixture-video-48.mpg (100%) create mode 100644 ffmpeg4java-tests/pom.xml rename {ffmpeg4java-macos-test/src/test/java/com/nextbreakpoint/ffmpeg4java/macos => ffmpeg4java-tests/src/test/java/com/nextbreakpoint/ffmpeg4java}/FFmpeg4JavaTest.java (73%) delete mode 100644 ffmpeg4java-windows-examples/pom.xml delete mode 100644 ffmpeg4java-windows-examples/sample.mpg delete mode 100644 ffmpeg4java-windows-examples/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/ConvertVideoMain.java delete mode 100644 ffmpeg4java-windows-test/fixture-frame-10.png delete mode 100644 ffmpeg4java-windows-test/fixture-frame-20.png delete mode 100644 ffmpeg4java-windows-test/fixture-frame-30.png delete mode 100644 ffmpeg4java-windows-test/fixture-frame-40.png delete mode 100644 ffmpeg4java-windows-test/fixture-video-48.mpg delete mode 100644 ffmpeg4java-windows-test/pom.xml delete mode 100644 ffmpeg4java-windows-test/src/test/java/com/nextbreakpoint/ffmpeg4java/windows/FFmpeg4JavaTest.java rename ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/{windows => }/AVBufferRef.java (99%) rename ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/{windows => }/AVCPBProperties.java (99%) rename ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/{windows => }/AVChannelCustom.java (99%) rename ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/{windows => }/AVChannelLayout.java (99%) rename ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/{windows => }/AVChapter.java (99%) rename ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/{windows => }/AVClass.java (99%) rename ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/{windows => }/AVCodec.java (99%) rename ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/{windows => }/AVCodecContext.java (99%) rename ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/{windows => }/AVCodecDescriptor.java (99%) rename ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/{windows => }/AVCodecHWConfig.java (99%) rename ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/{windows => }/AVCodecParameters.java (99%) rename ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/{windows => }/AVCodecParser.java (99%) rename ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/{windows => }/AVCodecParserContext.java (99%) rename ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/{windows => }/AVComponentDescriptor.java (99%) rename ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/{windows => }/AVDeviceInfo.java (99%) rename ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/{windows => }/AVDeviceInfoList.java (99%) rename ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/{windows => }/AVDeviceRect.java (99%) rename ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/{windows => }/AVDictionaryEntry.java (98%) rename ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/{windows => }/AVFilter.java (99%) rename ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/{windows => }/AVFilterChain.java (99%) rename ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/{windows => }/AVFilterContext.java (99%) rename ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/{windows => }/AVFilterFormatsConfig.java (99%) rename ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/{windows => }/AVFilterGraph.java (99%) rename ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/{windows => }/AVFilterGraphSegment.java (99%) rename ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/{windows => }/AVFilterInOut.java (99%) rename ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/{windows => }/AVFilterLink.java (99%) rename ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/{windows => }/AVFilterPadParams.java (98%) rename ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/{windows => }/AVFilterParams.java (99%) rename ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/{windows => }/AVFormatContext.java (99%) rename ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/{windows => }/AVFrame.java (99%) rename ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/{windows => }/AVFrameSideData.java (99%) rename ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/{windows => }/AVHWAccel.java (99%) rename ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/{windows => }/AVHWDeviceContext.java (99%) rename ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/{windows => }/AVHWFramesConstraints.java (99%) rename ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/{windows => }/AVHWFramesContext.java (99%) rename ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/{windows => }/AVIOContext.java (99%) rename ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/{windows => }/AVIODirEntry.java (99%) rename ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/{windows => }/AVIOInterruptCB.java (99%) rename ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/{windows => }/AVIndexEntry.java (99%) rename ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/{windows => }/AVInputFormat.java (99%) rename ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/{windows => }/AVOpenCallback.java (98%) rename ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/{windows => }/AVOption.java (99%) rename ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/{windows => }/AVOptionArrayDef.java (99%) rename ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/{windows => }/AVOptionRange.java (99%) rename ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/{windows => }/AVOptionRanges.java (99%) rename ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/{windows => }/AVOutputFormat.java (99%) rename ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/{windows => }/AVPacket.java (99%) rename ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/{windows => }/AVPacketList.java (98%) rename ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/{windows => }/AVPacketSideData.java (99%) rename ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/{windows => }/AVPanScan.java (99%) rename ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/{windows => }/AVPixFmtDescriptor.java (99%) rename ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/{windows => }/AVProbeData.java (99%) rename ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/{windows => }/AVProducerReferenceTime.java (98%) rename ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/{windows => }/AVProfile.java (98%) rename ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/{windows => }/AVProgram.java (99%) rename ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/{windows => }/AVRational.java (98%) rename ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/{windows => }/AVRegionOfInterest.java (99%) rename ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/{windows => }/AVStream.java (99%) rename ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/{windows => }/AVStreamGroup.java (99%) rename ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/{windows => }/AVStreamGroupTileGrid.java (99%) rename ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/{windows => }/AVSubtitle.java (99%) rename ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/{windows => }/AVSubtitleRect.java (99%) rename ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/{windows => }/Libffmpeg.java (99%) rename ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/{windows => }/Libffmpeg_1.java (99%) rename ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/{windows => }/Libffmpeg_2.java (99%) rename ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/{windows => }/RcOverride.java (99%) rename ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/{windows => }/SwsFilter.java (99%) rename ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/{windows => }/SwsVector.java (98%) rename ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/{windows => }/av_buffer_create$free.java (97%) rename ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/{windows => }/av_buffer_pool_init$alloc.java (97%) rename ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/{windows => }/av_buffer_pool_init2$alloc.java (97%) rename ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/{windows => }/av_buffer_pool_init2$pool_free.java (97%) rename ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/{windows => }/av_format_control_message.java (98%) rename ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/{windows => }/av_intfloat32.java (98%) rename ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/{windows => }/av_intfloat64.java (98%) rename ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/{windows => }/av_log_set_callback$callback.java (97%) rename ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/{windows => }/avcodec_default_execute$func.java (97%) rename ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/{windows => }/avcodec_default_execute2$func.java (97%) rename ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/{windows => }/avfilter_action_func.java (97%) rename ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/{windows => }/avfilter_execute_func.java (97%) rename ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/{windows => }/avio_alloc_context$read_packet.java (97%) rename ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/{windows => }/avio_alloc_context$seek.java (97%) rename ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/{windows => }/avio_alloc_context$write_packet.java (97%) diff --git a/.gitignore b/.gitignore index 6b395b5..a9fe009 100644 --- a/.gitignore +++ b/.gitignore @@ -1,26 +1,14 @@ *.iml .idea -/ffmpeg4java-macos-test/test-frame-10.png -/ffmpeg4java-macos-test/test-frame-20.png -/ffmpeg4java-macos-test/test-frame-30.png -/ffmpeg4java-macos-test/test-frame-40.png -/ffmpeg4java-macos-test/test-video-48.mpg -/ffmpeg4java-linux-test/test-frame-10.png -/ffmpeg4java-linux-test/test-frame-20.png -/ffmpeg4java-linux-test/test-frame-30.png -/ffmpeg4java-linux-test/test-frame-40.png -/ffmpeg4java-linux-test/test-video-48.mpg -/ffmpeg4java-windows-test/test-frame-10.png -/ffmpeg4java-windows-test/test-frame-20.png -/ffmpeg4java-windows-test/test-frame-30.png -/ffmpeg4java-windows-test/test-frame-40.png -/ffmpeg4java-windows-test/test-video-48.mpg /ffmpeg4java-macos/native/ffmpeg/ /ffmpeg4java-linux/native/ffmpeg/ /ffmpeg4java-windows/native/ffmpeg/ /ffmpeg4java-windows/src/main/resources/ffmpeg4java.dll /ffmpeg4java-linux/src/main/resources/libffmpeg4java.so /ffmpeg4java-macos/src/main/resources/libffmpeg4java.dylib -/ffmpeg4java-macos-examples/output.mp4 -/ffmpeg4java-linux-examples/output.mp4 -/ffmpeg4java-windows-examples/output.mp4 +/ffmpeg4java-examples/output.mp4 +/ffmpeg4java-tests/test-frame-10.png +/ffmpeg4java-tests/test-frame-20.png +/ffmpeg4java-tests/test-frame-30.png +/ffmpeg4java-tests/test-frame-40.png +/ffmpeg4java-tests/test-video-48.mpg diff --git a/Makefile b/Makefile index 0b5389c..e58a7d4 100755 --- a/Makefile +++ b/Makefile @@ -30,8 +30,8 @@ dump: verify: test $(system) @echo System = $(system) - #MAVEN_OPTS="--enable-preview --enable-native-access=ALL-UNNAMED -Djava.library.path=ffmpeg4java-$(system)-test/target/lib -Djextract.trace.downcalls=false -Xlog:library" mvn verify -P$(system) - MAVEN_OPTS="--enable-preview --enable-native-access=ALL-UNNAMED -Djava.library.path=ffmpeg4java-$(system)-test/target/lib -Djextract.trace.downcalls=false $(properties)" mvn verify -P$(system) + #MAVEN_OPTS="--enable-preview --enable-native-access=ALL-UNNAMED -Djava.library.path=ffmpeg4java-tests/target/lib -Djextract.trace.downcalls=false -Xlog:library" mvn verify -P$(system) + MAVEN_OPTS="--enable-preview --enable-native-access=ALL-UNNAMED -Djava.library.path=ffmpeg4java-tests/target/lib -Djextract.trace.downcalls=false $(properties)" mvn verify -P$(system) .PHONY: copy-legal copy-legal: diff --git a/README.md b/README.md index 9e74abb..a9ef88b 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,10 @@ -# FFmpeg4Java 7.0.1-1.1 +# FFmpeg4Java 7.0.1-1.2 FFmpeg4Java provides a Java wrapper of FFmpeg library version 7.0.1. +Please note that starting from version 7.0.1-1.0 the wrapper requires Java 22 and the Java FFM API (which is still in preview). +Older versions of the wrapper still work with Java 11 or later, but they use JNI with an old version of FFmpeg. + ## License @@ -54,19 +57,19 @@ If you are using Maven, add one of the following dependencies in your POM: com.nextbreakpoint com.nextbreakpoint.ffmpeg4java.macos - 7.0.1-1.1 + 7.0.1-1.2 com.nextbreakpoint com.nextbreakpoint.ffmpeg4java.linux - 7.0.1-1.1 + 7.0.1-1.2 com.nextbreakpoint com.nextbreakpoint.ffmpeg4java.windows - 7.0.1-1.1 + 7.0.1-1.2 Also, add one of the following to download the native library: @@ -226,25 +229,25 @@ Compile and package the JARs: The artifacts will be created in the target directory of each module: - ffmpeg4java-macos/target/com.nextbreakpoint.ffmpeg4java.macos-7.0.1-1.1-x86_64.jar - ffmpeg4java-macos/target/com.nextbreakpoint.ffmpeg4java.macos-7.0.1-1.1-x86_64-x86_64.jar + ffmpeg4java-macos/target/com.nextbreakpoint.ffmpeg4java.macos-7.0.1-1.2-x86_64.jar + ffmpeg4java-macos/target/com.nextbreakpoint.ffmpeg4java.macos-7.0.1-1.2-x86_64-x86_64.jar - ffmpeg4java-linux/target/com.nextbreakpoint.ffmpeg4java.linux-7.0.1-1.1-x86_64.jar - ffmpeg4java-linux/target/com.nextbreakpoint.ffmpeg4java.linux-7.0.1-1.1-x86_64-x86_64.jar + ffmpeg4java-linux/target/com.nextbreakpoint.ffmpeg4java.linux-7.0.1-1.2-x86_64.jar + ffmpeg4java-linux/target/com.nextbreakpoint.ffmpeg4java.linux-7.0.1-1.2-x86_64-x86_64.jar - ffmpeg4java-windows/target/com.nextbreakpoint.ffmpeg4java.windows-7.0.1-1.1-x86_64.jar - ffmpeg4java-windows/target/com.nextbreakpoint.ffmpeg4java.windows-7.0.1-1.1-x86_64-x86_64.jar + ffmpeg4java-windows/target/com.nextbreakpoint.ffmpeg4java.windows-7.0.1-1.2-x86_64.jar + ffmpeg4java-windows/target/com.nextbreakpoint.ffmpeg4java.windows-7.0.1-1.2-x86_64-x86_64.jar List the content of the JAR files: - unzip -t ffmpeg4java-macos/target/com.nextbreakpoint.ffmpeg4java.macos-7.0.1-1.1.jar - unzip -t ffmpeg4java-macos/target/com.nextbreakpoint.ffmpeg4java.macos-7.0.1-1.1-x86_64.jar + unzip -t ffmpeg4java-macos/target/com.nextbreakpoint.ffmpeg4java.macos-7.0.1-1.2.jar + unzip -t ffmpeg4java-macos/target/com.nextbreakpoint.ffmpeg4java.macos-7.0.1-1.2-x86_64.jar - unzip -t ffmpeg4java-linux/target/com.nextbreakpoint.ffmpeg4java.linux-7.0.1-1.1.jar - unzip -t ffmpeg4java-linux/target/com.nextbreakpoint.ffmpeg4java.linux-7.0.1-1.1-x86_64.jar + unzip -t ffmpeg4java-linux/target/com.nextbreakpoint.ffmpeg4java.linux-7.0.1-1.2.jar + unzip -t ffmpeg4java-linux/target/com.nextbreakpoint.ffmpeg4java.linux-7.0.1-1.2-x86_64.jar - unzip -t ffmpeg4java-windows/target/com.nextbreakpoint.ffmpeg4java.windows-7.0.1-1.1.jar - unzip -t ffmpeg4java-windows/target/com.nextbreakpoint.ffmpeg4java.windows-7.0.1-1.1-x86_64.jar + unzip -t ffmpeg4java-windows/target/com.nextbreakpoint.ffmpeg4java.windows-7.0.1-1.2.jar + unzip -t ffmpeg4java-windows/target/com.nextbreakpoint.ffmpeg4java.windows-7.0.1-1.2-x86_64.jar Install the artifacts in your local Maven repository: @@ -287,15 +290,11 @@ Generate the code for Windows (must be executed on Windows): ## Code examples -A simple example is provided for each supported system. - -See POM files for details about how to download the native library and execute the code: - - ffmpeg4java-macos-examples/pom.xml +A simple example is provided for the module ffmpeg4Java-examples. - ffmpeg4java-linux-examples/pom.xml +See the POM file for details about how to download the native library and execute the example: - ffmpeg4java-windows-examples/pom.xml + ffmpeg4java-examples/pom.xml ## References diff --git a/ffmpeg4java-examples/pom.xml b/ffmpeg4java-examples/pom.xml new file mode 100644 index 0000000..074c53e --- /dev/null +++ b/ffmpeg4java-examples/pom.xml @@ -0,0 +1,177 @@ + + 4.0.0 + + com.nextbreakpoint + com.nextbreakpoint.ffmpeg4java + 7.0.1-1.2 + + com.nextbreakpoint.ffmpeg4java.examples + jar + FFmpeg4Java Examples + FFmpeg4Java provides a Java wrapper of FFmpeg library + + + macos + + x86_64 + macos + + + + com.nextbreakpoint + com.nextbreakpoint.ffmpeg4java.macos + ${project.version} + + + + + + org.apache.maven.plugins + maven-dependency-plugin + + + copy-lib + test-compile + + unpack + + + + + com.nextbreakpoint + com.nextbreakpoint.ffmpeg4java.macos + x86_64 + jar + true + ${project.build.directory}/lib + + + **/*.dylib + + + + + + + + + linux + + x86_64 + linux + + + + com.nextbreakpoint + com.nextbreakpoint.ffmpeg4java.linux + ${project.version} + + + + + + org.apache.maven.plugins + maven-dependency-plugin + + + copy-lib + test-compile + + unpack + + + + + com.nextbreakpoint + com.nextbreakpoint.ffmpeg4java.linux + x86_64 + jar + true + ${project.build.directory}/lib + + + **/*.so + + + + + + + + + windows + + x86_64 + windows + + + + com.nextbreakpoint + com.nextbreakpoint.ffmpeg4java.windows + ${project.version} + + + + + + org.apache.maven.plugins + maven-dependency-plugin + + + copy-lib + test-compile + + unpack + + + + + com.nextbreakpoint + com.nextbreakpoint.ffmpeg4java.windows + x86_64 + jar + true + ${project.build.directory}/lib + + + **/*.dll + + + + + + + + + + + + org.codehaus.mojo + exec-maven-plugin + + + run + test + + exec + + + java + + --enable-preview + --enable-native-access=ALL-UNNAMED + -classpath + + -Djava.library.path=${project.build.directory}/lib + com.nextbreakpoint.ffmpeg4java.ConvertVideoMain + sample.mpg + output.mp4 + + + + + + + + diff --git a/ffmpeg4java-linux-examples/sample.mpg b/ffmpeg4java-examples/sample.mpg similarity index 100% rename from ffmpeg4java-linux-examples/sample.mpg rename to ffmpeg4java-examples/sample.mpg diff --git a/ffmpeg4java-linux-examples/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/ConvertVideoMain.java b/ffmpeg4java-examples/src/main/java/com/nextbreakpoint/ffmpeg4java/ConvertVideoMain.java similarity index 67% rename from ffmpeg4java-linux-examples/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/ConvertVideoMain.java rename to ffmpeg4java-examples/src/main/java/com/nextbreakpoint/ffmpeg4java/ConvertVideoMain.java index 9e06ca3..23b29df 100644 --- a/ffmpeg4java-linux-examples/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/ConvertVideoMain.java +++ b/ffmpeg4java-examples/src/main/java/com/nextbreakpoint/ffmpeg4java/ConvertVideoMain.java @@ -1,55 +1,55 @@ -package com.nextbreakpoint.ffmpeg4java.linux; +package com.nextbreakpoint.ffmpeg4java; import java.lang.foreign.Arena; import java.lang.foreign.MemorySegment; import java.lang.foreign.ValueLayout; -import static com.nextbreakpoint.ffmpeg4java.linux.Libffmpeg.avcodec_alloc_context3; -import static com.nextbreakpoint.ffmpeg4java.linux.Libffmpeg.avcodec_close; -import static com.nextbreakpoint.ffmpeg4java.linux.Libffmpeg.avcodec_open2; -import static com.nextbreakpoint.ffmpeg4java.linux.Libffmpeg.avcodec_parameters_from_context; -import static com.nextbreakpoint.ffmpeg4java.linux.Libffmpeg.avcodec_parameters_to_context; -import static com.nextbreakpoint.ffmpeg4java.linux.Libffmpeg.avcodec_receive_frame; -import static com.nextbreakpoint.ffmpeg4java.linux.Libffmpeg.avcodec_receive_packet; -import static com.nextbreakpoint.ffmpeg4java.linux.Libffmpeg.avcodec_send_frame; -import static com.nextbreakpoint.ffmpeg4java.linux.Libffmpeg.avcodec_send_packet; -import static com.nextbreakpoint.ffmpeg4java.linux.Libffmpeg.sws_freeContext; -import static com.nextbreakpoint.ffmpeg4java.linux.Libffmpeg.sws_getCachedContext; -import static com.nextbreakpoint.ffmpeg4java.linux.Libffmpeg.sws_scale; -import static com.nextbreakpoint.ffmpeg4java.linux.Libffmpeg_1.AV_CODEC_ID_NONE; -import static com.nextbreakpoint.ffmpeg4java.linux.Libffmpeg_1.AV_PKT_DATA_CPB_PROPERTIES; -import static com.nextbreakpoint.ffmpeg4java.linux.Libffmpeg_1.av_dump_format; -import static com.nextbreakpoint.ffmpeg4java.linux.Libffmpeg_1.av_frame_alloc; -import static com.nextbreakpoint.ffmpeg4java.linux.Libffmpeg_1.av_guess_format; -import static com.nextbreakpoint.ffmpeg4java.linux.Libffmpeg_1.av_packet_alloc; -import static com.nextbreakpoint.ffmpeg4java.linux.Libffmpeg_1.av_packet_rescale_ts; -import static com.nextbreakpoint.ffmpeg4java.linux.Libffmpeg_1.av_packet_unref; -import static com.nextbreakpoint.ffmpeg4java.linux.Libffmpeg_1.av_read_frame; -import static com.nextbreakpoint.ffmpeg4java.linux.Libffmpeg_1.av_stream_new_side_data; -import static com.nextbreakpoint.ffmpeg4java.linux.Libffmpeg_1.av_write_frame; -import static com.nextbreakpoint.ffmpeg4java.linux.Libffmpeg_1.av_write_trailer; -import static com.nextbreakpoint.ffmpeg4java.linux.Libffmpeg_1.avcodec_find_decoder; -import static com.nextbreakpoint.ffmpeg4java.linux.Libffmpeg_1.avcodec_find_encoder; -import static com.nextbreakpoint.ffmpeg4java.linux.Libffmpeg_1.avcodec_parameters_alloc; -import static com.nextbreakpoint.ffmpeg4java.linux.Libffmpeg_1.avformat_alloc_context; -import static com.nextbreakpoint.ffmpeg4java.linux.Libffmpeg_1.avformat_close_input; -import static com.nextbreakpoint.ffmpeg4java.linux.Libffmpeg_1.avformat_find_stream_info; -import static com.nextbreakpoint.ffmpeg4java.linux.Libffmpeg_1.avformat_free_context; -import static com.nextbreakpoint.ffmpeg4java.linux.Libffmpeg_1.avformat_new_stream; -import static com.nextbreakpoint.ffmpeg4java.linux.Libffmpeg_1.avformat_open_input; -import static com.nextbreakpoint.ffmpeg4java.linux.Libffmpeg_1.avformat_write_header; -import static com.nextbreakpoint.ffmpeg4java.linux.Libffmpeg_1.avio_close; -import static com.nextbreakpoint.ffmpeg4java.linux.Libffmpeg_1.avio_open2; -import static com.nextbreakpoint.ffmpeg4java.linux.Libffmpeg_2.AVIO_FLAG_WRITE; -import static com.nextbreakpoint.ffmpeg4java.linux.Libffmpeg_2.AVMEDIA_TYPE_VIDEO; -import static com.nextbreakpoint.ffmpeg4java.linux.Libffmpeg_2.AV_PIX_FMT_RGB24; -import static com.nextbreakpoint.ffmpeg4java.linux.Libffmpeg_2.AV_PIX_FMT_YUV420P; -import static com.nextbreakpoint.ffmpeg4java.linux.Libffmpeg_2.C_POINTER; -import static com.nextbreakpoint.ffmpeg4java.linux.Libffmpeg_2.SWS_BILINEAR; -import static com.nextbreakpoint.ffmpeg4java.linux.Libffmpeg_2.av_free; -import static com.nextbreakpoint.ffmpeg4java.linux.Libffmpeg_2.av_image_alloc; -import static com.nextbreakpoint.ffmpeg4java.linux.Libffmpeg_2.av_image_fill_arrays; -import static com.nextbreakpoint.ffmpeg4java.linux.Libffmpeg_2.av_image_get_buffer_size; +import static com.nextbreakpoint.ffmpeg4java.Libffmpeg.avcodec_alloc_context3; +import static com.nextbreakpoint.ffmpeg4java.Libffmpeg.avcodec_close; +import static com.nextbreakpoint.ffmpeg4java.Libffmpeg.avcodec_open2; +import static com.nextbreakpoint.ffmpeg4java.Libffmpeg.avcodec_parameters_from_context; +import static com.nextbreakpoint.ffmpeg4java.Libffmpeg.avcodec_parameters_to_context; +import static com.nextbreakpoint.ffmpeg4java.Libffmpeg.avcodec_receive_frame; +import static com.nextbreakpoint.ffmpeg4java.Libffmpeg.avcodec_receive_packet; +import static com.nextbreakpoint.ffmpeg4java.Libffmpeg.avcodec_send_frame; +import static com.nextbreakpoint.ffmpeg4java.Libffmpeg.avcodec_send_packet; +import static com.nextbreakpoint.ffmpeg4java.Libffmpeg.sws_freeContext; +import static com.nextbreakpoint.ffmpeg4java.Libffmpeg.sws_getCachedContext; +import static com.nextbreakpoint.ffmpeg4java.Libffmpeg.sws_scale; +import static com.nextbreakpoint.ffmpeg4java.Libffmpeg_1.AV_CODEC_ID_NONE; +import static com.nextbreakpoint.ffmpeg4java.Libffmpeg_1.AV_PKT_DATA_CPB_PROPERTIES; +import static com.nextbreakpoint.ffmpeg4java.Libffmpeg_1.av_dump_format; +import static com.nextbreakpoint.ffmpeg4java.Libffmpeg_1.av_frame_alloc; +import static com.nextbreakpoint.ffmpeg4java.Libffmpeg_1.av_guess_format; +import static com.nextbreakpoint.ffmpeg4java.Libffmpeg_1.av_packet_alloc; +import static com.nextbreakpoint.ffmpeg4java.Libffmpeg_1.av_packet_rescale_ts; +import static com.nextbreakpoint.ffmpeg4java.Libffmpeg_1.av_packet_unref; +import static com.nextbreakpoint.ffmpeg4java.Libffmpeg_1.av_read_frame; +import static com.nextbreakpoint.ffmpeg4java.Libffmpeg_1.av_stream_new_side_data; +import static com.nextbreakpoint.ffmpeg4java.Libffmpeg_1.av_write_frame; +import static com.nextbreakpoint.ffmpeg4java.Libffmpeg_1.av_write_trailer; +import static com.nextbreakpoint.ffmpeg4java.Libffmpeg_1.avcodec_find_decoder; +import static com.nextbreakpoint.ffmpeg4java.Libffmpeg_1.avcodec_find_encoder; +import static com.nextbreakpoint.ffmpeg4java.Libffmpeg_1.avcodec_parameters_alloc; +import static com.nextbreakpoint.ffmpeg4java.Libffmpeg_1.avformat_alloc_context; +import static com.nextbreakpoint.ffmpeg4java.Libffmpeg_1.avformat_close_input; +import static com.nextbreakpoint.ffmpeg4java.Libffmpeg_1.avformat_find_stream_info; +import static com.nextbreakpoint.ffmpeg4java.Libffmpeg_1.avformat_free_context; +import static com.nextbreakpoint.ffmpeg4java.Libffmpeg_1.avformat_new_stream; +import static com.nextbreakpoint.ffmpeg4java.Libffmpeg_1.avformat_open_input; +import static com.nextbreakpoint.ffmpeg4java.Libffmpeg_1.avformat_write_header; +import static com.nextbreakpoint.ffmpeg4java.Libffmpeg_1.avio_close; +import static com.nextbreakpoint.ffmpeg4java.Libffmpeg_1.avio_open2; +import static com.nextbreakpoint.ffmpeg4java.Libffmpeg_2.AVIO_FLAG_WRITE; +import static com.nextbreakpoint.ffmpeg4java.Libffmpeg_2.AVMEDIA_TYPE_VIDEO; +import static com.nextbreakpoint.ffmpeg4java.Libffmpeg_2.AV_PIX_FMT_RGB24; +import static com.nextbreakpoint.ffmpeg4java.Libffmpeg_2.AV_PIX_FMT_YUV420P; +import static com.nextbreakpoint.ffmpeg4java.Libffmpeg_2.C_POINTER; +import static com.nextbreakpoint.ffmpeg4java.Libffmpeg_2.SWS_BILINEAR; +import static com.nextbreakpoint.ffmpeg4java.Libffmpeg_2.av_free; +import static com.nextbreakpoint.ffmpeg4java.Libffmpeg_2.av_image_alloc; +import static com.nextbreakpoint.ffmpeg4java.Libffmpeg_2.av_image_fill_arrays; +import static com.nextbreakpoint.ffmpeg4java.Libffmpeg_2.av_image_get_buffer_size; import static java.lang.foreign.MemorySegment.NULL; class ConvertVideoMain { @@ -63,8 +63,8 @@ public static void main(String[] args) { System.out.println("Converting video..."); - System.out.println(STR."Source file \{sourceFileName}"); - System.out.println(STR."Output file \{outputFileName}"); + System.out.printf("Source file %s%n", sourceFileName); + System.out.printf("Output file %s%n", outputFileName); try (var arena = Arena.ofConfined()) { var pInputFileName = arena.allocateFrom(sourceFileName); @@ -90,13 +90,13 @@ public static void main(String[] args) { ppInputFormatCtx = arena.allocate(C_POINTER); if (avformat_open_input(ppInputFormatCtx, pInputFileName, NULL, NULL) != 0) { - throw new RuntimeException(formatLoadVideoError(sourceFileName, "Can't open file")); + throw new RuntimeException(decodeVideoError(sourceFileName, "Can't open file")); } final var pInputFormatCtx = ppInputFormatCtx.get(C_POINTER, 0); if (avformat_find_stream_info(pInputFormatCtx, NULL) != 0) { - throw new RuntimeException(formatLoadVideoError(sourceFileName, "Can't find stream info")); + throw new RuntimeException(decodeVideoError(sourceFileName, "Can't find stream info")); } av_dump_format(pInputFormatCtx, 0, pInputFileName, 0); @@ -124,25 +124,25 @@ public static void main(String[] args) { } if (videoStreamIndex == -1) { - throw new RuntimeException(formatLoadVideoError(sourceFileName, "Can't find video stream")); + throw new RuntimeException(decodeVideoError(sourceFileName, "Can't find video stream")); } if (pInputCodec.equals(NULL)) { - throw new RuntimeException(formatLoadVideoError(sourceFileName, "Can't find decoder")); + throw new RuntimeException(decodeVideoError(sourceFileName, "Can't find decoder")); } pInputCodecCtx = avcodec_alloc_context3(pInputCodec); if (avcodec_parameters_to_context(pInputCodecCtx, pInputCodecParameters) != 0) { - throw new RuntimeException(formatLoadVideoError(sourceFileName, "Can't copy codec parameters")); + throw new RuntimeException(decodeVideoError(sourceFileName, "Can't copy codec parameters")); } if (pInputCodecCtx.equals(NULL)) { - throw new RuntimeException(formatLoadVideoError(sourceFileName, "Can't allocate codec context")); + throw new RuntimeException(decodeVideoError(sourceFileName, "Can't allocate codec context")); } if (avcodec_open2(pInputCodecCtx, pInputCodec, NULL) < 0) { - throw new RuntimeException(formatLoadVideoError(sourceFileName, "Can't open decoder")); + throw new RuntimeException(decodeVideoError(sourceFileName, "Can't open decoder")); } final int frameWidth = AVCodecContext.width(pInputCodecCtx); @@ -152,18 +152,18 @@ public static void main(String[] args) { pInputSwsContext = sws_getCachedContext(NULL, frameWidth, frameHeight, pixelFormat, frameWidth, frameHeight, AV_PIX_FMT_RGB24(), SWS_BILINEAR(), NULL, NULL, NULL); if (pInputSwsContext.equals(NULL)) { - throw new RuntimeException(formatLoadVideoError(sourceFileName, "Can't allocate scale context")); + throw new RuntimeException(decodeVideoError(sourceFileName, "Can't allocate scale context")); } pInputRGBFrame = av_frame_alloc(); pInputTMPFrame = av_frame_alloc(); if (pInputRGBFrame.equals(NULL)) { - throw new RuntimeException(formatLoadVideoError(sourceFileName, "Can't allocate RGB frame")); + throw new RuntimeException(decodeVideoError(sourceFileName, "Can't allocate RGB frame")); } if (pInputTMPFrame.equals(NULL)) { - throw new RuntimeException(formatLoadVideoError(sourceFileName, "Can't allocate TMP frame")); + throw new RuntimeException(decodeVideoError(sourceFileName, "Can't allocate TMP frame")); } final int inputRGBByteSize = av_image_get_buffer_size(AV_PIX_FMT_RGB24(), frameWidth, frameHeight, 1); @@ -171,7 +171,7 @@ public static void main(String[] args) { pInputRGBBuffer = arena.allocate(ValueLayout.OfByte.JAVA_BYTE, inputRGBByteSize); if (pInputRGBBuffer.equals(NULL)) { - throw new RuntimeException(formatLoadVideoError(sourceFileName, "Can't allocate RGB buffer")); + throw new RuntimeException(decodeVideoError(sourceFileName, "Can't allocate RGB buffer")); } av_image_fill_arrays(AVFrame.data(pInputRGBFrame), AVFrame.linesize(pInputRGBFrame), pInputRGBBuffer, AV_PIX_FMT_RGB24(), frameWidth, frameHeight, 1); @@ -179,23 +179,23 @@ public static void main(String[] args) { pInputPacket = av_packet_alloc(); if (pInputPacket.equals(NULL)) { - throw new RuntimeException(formatLoadVideoError(sourceFileName, "Can't allocate packet")); + throw new RuntimeException(decodeVideoError(sourceFileName, "Can't allocate packet")); } pOutputFormatCtx = avformat_alloc_context(); if (pOutputFormatCtx.equals(NULL)) { - throw new RuntimeException(formatSaveVideoError(outputFileName, "Can't allocate format context")); + throw new RuntimeException(encodeVideoError(outputFileName, "Can't allocate format context")); } final var pOutputFormat = av_guess_format(NULL, pOutputFileName, NULL); if (pOutputFormat.equals(NULL)) { - throw new RuntimeException(formatSaveVideoError(outputFileName, "Can't allocate output format")); + throw new RuntimeException(encodeVideoError(outputFileName, "Can't allocate output format")); } if (AVOutputFormat.video_codec(pOutputFormat) == AV_CODEC_ID_NONE()) { - throw new RuntimeException(formatSaveVideoError(outputFileName, "Video codec not found")); + throw new RuntimeException(encodeVideoError(outputFileName, "Video codec not found")); } AVFormatContext.oformat(pOutputFormatCtx, pOutputFormat); @@ -203,13 +203,13 @@ public static void main(String[] args) { final var pOutputCodec = avcodec_find_encoder(AVOutputFormat.video_codec(pOutputFormat)); if (pOutputCodec.equals(NULL)) { - throw new RuntimeException(formatSaveVideoError(outputFileName, "Can't find encoder")); + throw new RuntimeException(encodeVideoError(outputFileName, "Can't find encoder")); } pOutputCodecCtx = avcodec_alloc_context3(pOutputCodec); if (pOutputCodecCtx.equals(NULL)) { - throw new RuntimeException(formatSaveVideoError(outputFileName, "Can't allocate codec context")); + throw new RuntimeException(encodeVideoError(outputFileName, "Can't allocate codec context")); } final var pTimeBase = arena.allocate(AVRational.layout()); @@ -229,21 +229,21 @@ public static void main(String[] args) { final var pOutputStream = avformat_new_stream(pOutputFormatCtx, pOutputCodec); if (pOutputStream.equals(NULL)) { - throw new RuntimeException(formatSaveVideoError(outputFileName, "Can't create stream")); + throw new RuntimeException(encodeVideoError(outputFileName, "Can't create stream")); } if (AVFormatContext.nb_streams(pOutputFormatCtx) != 1) { - throw new RuntimeException(formatSaveVideoError(outputFileName, "Unexpected number of streams")); + throw new RuntimeException(encodeVideoError(outputFileName, "Unexpected number of streams")); } final var pOutputCodecParameters = avcodec_parameters_alloc(); if (pOutputCodecParameters.equals(NULL)) { - throw new RuntimeException(formatSaveVideoError(outputFileName, "Can't allocate codec parameters")); + throw new RuntimeException(encodeVideoError(outputFileName, "Can't allocate codec parameters")); } if (avcodec_parameters_from_context(pOutputCodecParameters, pOutputCodecCtx) != 0) { - throw new RuntimeException(formatLoadVideoError(outputFileName, "Can't copy codec parameters")); + throw new RuntimeException(decodeVideoError(outputFileName, "Can't copy codec parameters")); } AVCodecParameters.codec_id(pOutputCodecParameters, AVOutputFormat.video_codec(pOutputFormat)); @@ -257,19 +257,19 @@ public static void main(String[] args) { AVCPBProperties.buffer_size(pOutputProperties, frameWidth * frameHeight * 3L * 2L); if (avcodec_open2(pOutputCodecCtx, pOutputCodec, NULL) != 0) { - throw new RuntimeException(formatSaveVideoError(outputFileName, "Can't open encoder")); + throw new RuntimeException(encodeVideoError(outputFileName, "Can't open encoder")); } final var ppOutputAVIOCtx = arena.allocate(C_POINTER); if (avio_open2(ppOutputAVIOCtx, pOutputFileName, AVIO_FLAG_WRITE(), NULL, NULL) < 0) { - throw new RuntimeException(formatSaveVideoError(outputFileName, "Can't open file")); + throw new RuntimeException(encodeVideoError(outputFileName, "Can't open file")); } pOutputAVIOCtx = ppOutputAVIOCtx.get(C_POINTER, 0); if (pOutputAVIOCtx.equals(NULL)) { - throw new RuntimeException(formatLoadVideoError(outputFileName, "Can't allocate IO context")); + throw new RuntimeException(decodeVideoError(outputFileName, "Can't allocate IO context")); } AVFormatContext.pb(pOutputFormatCtx, pOutputAVIOCtx); @@ -277,18 +277,18 @@ public static void main(String[] args) { pOutputSwsContext = sws_getCachedContext(NULL, frameWidth, frameHeight, AV_PIX_FMT_RGB24(), frameWidth, frameHeight, AV_PIX_FMT_YUV420P(), SWS_BILINEAR(), NULL, NULL, NULL); if (pOutputSwsContext.equals(NULL)) { - throw new RuntimeException(formatLoadVideoError(outputFileName, "Can't allocate scale context")); + throw new RuntimeException(decodeVideoError(outputFileName, "Can't allocate scale context")); } pOutputRGBFrame = av_frame_alloc(); pOutputYUVFrame = av_frame_alloc(); if (pOutputRGBFrame.equals(NULL)) { - throw new RuntimeException(formatLoadVideoError(outputFileName, "Can't allocate RGB frame")); + throw new RuntimeException(decodeVideoError(outputFileName, "Can't allocate RGB frame")); } if (pOutputYUVFrame.equals(NULL)) { - throw new RuntimeException(formatLoadVideoError(outputFileName, "Can't allocate YUV frame")); + throw new RuntimeException(decodeVideoError(outputFileName, "Can't allocate YUV frame")); } AVFrame.width(pOutputRGBFrame, frameWidth); @@ -308,11 +308,11 @@ public static void main(String[] args) { pOutputYUVBuffer = arena.allocate(outputYUVByteSize); if (pOutputRGBBuffer.equals(NULL)) { - throw new RuntimeException(formatLoadVideoError(outputFileName, "Can't allocate RGB buffer")); + throw new RuntimeException(decodeVideoError(outputFileName, "Can't allocate RGB buffer")); } if (pOutputYUVBuffer.equals(NULL)) { - throw new RuntimeException(formatLoadVideoError(outputFileName, "Can't allocate YUV buffer")); + throw new RuntimeException(decodeVideoError(outputFileName, "Can't allocate YUV buffer")); } av_image_fill_arrays(AVFrame.data(pOutputRGBFrame), AVFrame.linesize(pOutputRGBFrame), pOutputRGBBuffer, AV_PIX_FMT_RGB24(), frameWidth, frameHeight, 1); @@ -321,17 +321,17 @@ public static void main(String[] args) { final var pOutputPacket = av_packet_alloc(); if (pOutputPacket.equals(NULL)) { - throw new RuntimeException(formatLoadVideoError(outputFileName, "Can't allocate packet")); + throw new RuntimeException(decodeVideoError(outputFileName, "Can't allocate packet")); } AVPacket.stream_index(pOutputPacket, AVStream.index(pOutputStream)); if (inputRGBByteSize != 3 * frameWidth * frameHeight) { - throw new RuntimeException(formatLoadVideoError(sourceFileName, "Unexpected buffer size")); + throw new RuntimeException(decodeVideoError(sourceFileName, "Unexpected buffer size")); } if (outputRGBByteSize != 3 * frameWidth * frameHeight) { - throw new RuntimeException(formatLoadVideoError(outputFileName, "Unexpected buffer size")); + throw new RuntimeException(decodeVideoError(outputFileName, "Unexpected buffer size")); } final byte[] buffer = new byte[outputRGBByteSize]; @@ -449,11 +449,11 @@ public static void main(String[] args) { } } - private static String formatLoadVideoError(String fileName, String message) { - return STR."Decode video error (file = \{fileName}). \{message}"; + private static String decodeVideoError(String fileName, String message) { + return "Decode video error (file = %s). %s".formatted(fileName, message); } - private static String formatSaveVideoError(String fileName, String message) { - return STR."Encode video error (file = \{fileName}). \{message}"; + private static String encodeVideoError(String fileName, String message) { + return "Encode video error (file = %s). %s".formatted(fileName, message); } } \ No newline at end of file diff --git a/ffmpeg4java-linux-examples/pom.xml b/ffmpeg4java-linux-examples/pom.xml deleted file mode 100644 index c47da98..0000000 --- a/ffmpeg4java-linux-examples/pom.xml +++ /dev/null @@ -1,76 +0,0 @@ - - 4.0.0 - - com.nextbreakpoint - com.nextbreakpoint.ffmpeg4java - 7.0.1-1.1 - - com.nextbreakpoint.ffmpeg4java.linux.examples - jar - FFmpeg4Java Linux Examples - FFmpeg4Java provides a Java wrapper of FFmpeg library - - - com.nextbreakpoint - com.nextbreakpoint.ffmpeg4java.linux - ${project.version} - - - - - - org.apache.maven.plugins - maven-dependency-plugin - - - copy-lib - test-compile - - unpack - - - - - com.nextbreakpoint - com.nextbreakpoint.ffmpeg4java.linux - x86_64 - jar - true - ${project.build.directory}/lib - - - **/*.so - - - - - - org.codehaus.mojo - exec-maven-plugin - - - run - test - - exec - - - java - - --enable-preview - --enable-native-access=ALL-UNNAMED - -classpath - - -Djava.library.path=${project.build.directory}/lib - com.nextbreakpoint.ffmpeg4java.linux.ConvertVideoMain - sample.mpg - output.mp4 - - - - - - - - diff --git a/ffmpeg4java-linux-test/pom.xml b/ffmpeg4java-linux-test/pom.xml deleted file mode 100644 index 8c59b55..0000000 --- a/ffmpeg4java-linux-test/pom.xml +++ /dev/null @@ -1,50 +0,0 @@ - - 4.0.0 - - com.nextbreakpoint - com.nextbreakpoint.ffmpeg4java - 7.0.1-1.1 - - com.nextbreakpoint.ffmpeg4java.linux.test - jar - FFmpeg4Java Linux Test - FFmpeg4Java provides a Java wrapper of FFmpeg library - - - com.nextbreakpoint - com.nextbreakpoint.ffmpeg4java.linux - ${project.version} - - - - - - org.apache.maven.plugins - maven-dependency-plugin - - - copy-lib - test-compile - - unpack - - - - - com.nextbreakpoint - com.nextbreakpoint.ffmpeg4java.linux - x86_64 - jar - true - ${project.build.directory}/lib - - - **/*.so - - - - - - - diff --git a/ffmpeg4java-linux-test/src/test/java/com/nextbreakpoint/ffmpeg4java/linux/FFmpeg4JavaTest.java b/ffmpeg4java-linux-test/src/test/java/com/nextbreakpoint/ffmpeg4java/linux/FFmpeg4JavaTest.java deleted file mode 100644 index dd152ff..0000000 --- a/ffmpeg4java-linux-test/src/test/java/com/nextbreakpoint/ffmpeg4java/linux/FFmpeg4JavaTest.java +++ /dev/null @@ -1,594 +0,0 @@ -package com.nextbreakpoint.ffmpeg4java.linux; - -import org.assertj.core.data.Offset; -import org.junit.jupiter.api.Test; - -import javax.imageio.ImageIO; -import java.awt.image.BufferedImage; -import java.awt.image.DataBufferInt; -import java.io.File; -import java.io.FileOutputStream; -import java.io.IOException; -import java.lang.foreign.Arena; -import java.lang.foreign.MemorySegment; -import java.lang.foreign.ValueLayout; -import java.util.function.BiConsumer; - -import static com.nextbreakpoint.ffmpeg4java.linux.Libffmpeg.avcodec_alloc_context3; -import static com.nextbreakpoint.ffmpeg4java.linux.Libffmpeg.avcodec_close; -import static com.nextbreakpoint.ffmpeg4java.linux.Libffmpeg.avcodec_open2; -import static com.nextbreakpoint.ffmpeg4java.linux.Libffmpeg.avcodec_parameters_from_context; -import static com.nextbreakpoint.ffmpeg4java.linux.Libffmpeg.avcodec_parameters_to_context; -import static com.nextbreakpoint.ffmpeg4java.linux.Libffmpeg.avcodec_receive_frame; -import static com.nextbreakpoint.ffmpeg4java.linux.Libffmpeg.avcodec_receive_packet; -import static com.nextbreakpoint.ffmpeg4java.linux.Libffmpeg.avcodec_send_frame; -import static com.nextbreakpoint.ffmpeg4java.linux.Libffmpeg.avcodec_send_packet; -import static com.nextbreakpoint.ffmpeg4java.linux.Libffmpeg.sws_freeContext; -import static com.nextbreakpoint.ffmpeg4java.linux.Libffmpeg.sws_getCachedContext; -import static com.nextbreakpoint.ffmpeg4java.linux.Libffmpeg.sws_scale; -import static com.nextbreakpoint.ffmpeg4java.linux.Libffmpeg_1.AV_CODEC_ID_NONE; -import static com.nextbreakpoint.ffmpeg4java.linux.Libffmpeg_1.AV_PKT_DATA_CPB_PROPERTIES; -import static com.nextbreakpoint.ffmpeg4java.linux.Libffmpeg_1.av_dump_format; -import static com.nextbreakpoint.ffmpeg4java.linux.Libffmpeg_1.av_frame_alloc; -import static com.nextbreakpoint.ffmpeg4java.linux.Libffmpeg_1.av_guess_format; -import static com.nextbreakpoint.ffmpeg4java.linux.Libffmpeg_1.av_packet_alloc; -import static com.nextbreakpoint.ffmpeg4java.linux.Libffmpeg_1.av_packet_rescale_ts; -import static com.nextbreakpoint.ffmpeg4java.linux.Libffmpeg_1.av_packet_unref; -import static com.nextbreakpoint.ffmpeg4java.linux.Libffmpeg_1.av_read_frame; -import static com.nextbreakpoint.ffmpeg4java.linux.Libffmpeg_1.av_stream_new_side_data; -import static com.nextbreakpoint.ffmpeg4java.linux.Libffmpeg_1.av_write_frame; -import static com.nextbreakpoint.ffmpeg4java.linux.Libffmpeg_1.av_write_trailer; -import static com.nextbreakpoint.ffmpeg4java.linux.Libffmpeg_1.avcodec_find_decoder; -import static com.nextbreakpoint.ffmpeg4java.linux.Libffmpeg_1.avcodec_find_encoder; -import static com.nextbreakpoint.ffmpeg4java.linux.Libffmpeg_1.avcodec_parameters_alloc; -import static com.nextbreakpoint.ffmpeg4java.linux.Libffmpeg_1.avformat_alloc_context; -import static com.nextbreakpoint.ffmpeg4java.linux.Libffmpeg_1.avformat_close_input; -import static com.nextbreakpoint.ffmpeg4java.linux.Libffmpeg_1.avformat_find_stream_info; -import static com.nextbreakpoint.ffmpeg4java.linux.Libffmpeg_1.avformat_free_context; -import static com.nextbreakpoint.ffmpeg4java.linux.Libffmpeg_1.avformat_new_stream; -import static com.nextbreakpoint.ffmpeg4java.linux.Libffmpeg_1.avformat_open_input; -import static com.nextbreakpoint.ffmpeg4java.linux.Libffmpeg_1.avformat_write_header; -import static com.nextbreakpoint.ffmpeg4java.linux.Libffmpeg_1.avio_close; -import static com.nextbreakpoint.ffmpeg4java.linux.Libffmpeg_1.avio_open2; -import static com.nextbreakpoint.ffmpeg4java.linux.Libffmpeg_2.AVIO_FLAG_WRITE; -import static com.nextbreakpoint.ffmpeg4java.linux.Libffmpeg_2.AVMEDIA_TYPE_VIDEO; -import static com.nextbreakpoint.ffmpeg4java.linux.Libffmpeg_2.AV_PIX_FMT_RGB24; -import static com.nextbreakpoint.ffmpeg4java.linux.Libffmpeg_2.AV_PIX_FMT_YUV420P; -import static com.nextbreakpoint.ffmpeg4java.linux.Libffmpeg_2.C_POINTER; -import static com.nextbreakpoint.ffmpeg4java.linux.Libffmpeg_2.SWS_BILINEAR; -import static com.nextbreakpoint.ffmpeg4java.linux.Libffmpeg_2.av_free; -import static com.nextbreakpoint.ffmpeg4java.linux.Libffmpeg_2.av_image_alloc; -import static com.nextbreakpoint.ffmpeg4java.linux.Libffmpeg_2.av_image_fill_arrays; -import static com.nextbreakpoint.ffmpeg4java.linux.Libffmpeg_2.av_image_get_buffer_size; -import static java.lang.foreign.MemorySegment.NULL; -import static org.assertj.core.api.Assertions.assertThat; - -class FFmpeg4JavaTest { - @Test - public void shouldDecode48Frames() { - int frameCount = loadVideo(getFileName("fixture-video-48.mpg"), FFmpeg4JavaTest::printFrame); - assertThat(frameCount).isEqualTo(48); - } - - @Test - public void shouldEncode48Frames() { - int fps = 24; - int frames = 48; - int frameWidth = 640; - int frameHeight = 480; - int frameCount = saveVideo(getFileName("test-video-48.mpg"), fps, frames, frameWidth, frameHeight, FFmpeg4JavaTest::printFrame); - assertThat(frameCount).isEqualTo(frames); - } - - @Test - public void shouldDecodeFrames() throws IOException { - int frameWidth = 640; - int frameHeight = 480; - final BufferedImage image = new BufferedImage(frameWidth, frameHeight, BufferedImage.TYPE_INT_ARGB); - loadVideo(getFileName("fixture-video-48.mpg"), (frameCount, bytes) -> saveFrame(frameCount, image, bytes)); - assertThat(error(convertFormat(loadImage(getFileName("fixture-frame-10.png"))), convertFormat(loadImage(getFileName("test-frame-10.png"))))).isCloseTo(0.0, Offset.offset(10.0)); - assertThat(error(convertFormat(loadImage(getFileName("fixture-frame-20.png"))), convertFormat(loadImage(getFileName("test-frame-20.png"))))).isCloseTo(0.0, Offset.offset(10.0)); - assertThat(error(convertFormat(loadImage(getFileName("fixture-frame-30.png"))), convertFormat(loadImage(getFileName("test-frame-30.png"))))).isCloseTo(0.0, Offset.offset(10.0)); - assertThat(error(convertFormat(loadImage(getFileName("fixture-frame-40.png"))), convertFormat(loadImage(getFileName("test-frame-40.png"))))).isCloseTo(0.0, Offset.offset(10.0)); - } - - @Test - public void shouldEncodeFrames() throws IOException { - int fps = 24; - int frames = 48; - int frameWidth = 640; - int frameHeight = 480; - final BufferedImage image = new BufferedImage(frameWidth, frameHeight, BufferedImage.TYPE_INT_ARGB); - saveVideo(getFileName("test-video-48.mpg"), fps, frames, frameWidth, frameHeight, (frameCount, bytes) -> printFrame(frameCount, bytes, frames)); - loadVideo(getFileName("test-video-48.mpg"), (frameCount, bytes) -> saveFrame(frameCount, image, bytes)); - assertThat(error(convertFormat(loadImage(getFileName("fixture-frame-10.png"))), convertFormat(loadImage(getFileName("test-frame-10.png"))))).isCloseTo(0.0, Offset.offset(10.0)); - assertThat(error(convertFormat(loadImage(getFileName("fixture-frame-20.png"))), convertFormat(loadImage(getFileName("test-frame-20.png"))))).isCloseTo(0.0, Offset.offset(10.0)); - assertThat(error(convertFormat(loadImage(getFileName("fixture-frame-30.png"))), convertFormat(loadImage(getFileName("test-frame-30.png"))))).isCloseTo(0.0, Offset.offset(10.0)); - assertThat(error(convertFormat(loadImage(getFileName("fixture-frame-40.png"))), convertFormat(loadImage(getFileName("test-frame-40.png"))))).isCloseTo(0.0, Offset.offset(10.0)); - } - - private static int loadVideo(String fileName, BiConsumer consumer) { - int frameCount = 0; - - try (var arena = Arena.ofConfined()) { - var ppInputFormatCtx = NULL; - var pInputCodecCtx = NULL; - var pInputSwsContext = NULL; - var pInputRGBFrame = NULL; - var pInputRGBBuffer = NULL; - var pInputTMPFrame = NULL; - var pInputPacket = NULL; - - try { - ppInputFormatCtx = arena.allocate(C_POINTER); - - final var pInputFileName = arena.allocateFrom(fileName); - - if (avformat_open_input(ppInputFormatCtx, pInputFileName, NULL, NULL) != 0) { - throw new RuntimeException(formatLoadVideoError(fileName, "Can't open file")); - } - - final var pInputFormatCtx = ppInputFormatCtx.get(C_POINTER, 0); - - if (avformat_find_stream_info(pInputFormatCtx, NULL) != 0) { - throw new RuntimeException(formatLoadVideoError(fileName, "Can't find stream info")); - } - - av_dump_format(pInputFormatCtx, 0, pInputFileName, 0); - - final int nbStreams = AVFormatContext.nb_streams(pInputFormatCtx); - final var pInputStreams = AVFormatContext.streams(pInputFormatCtx); - - var pInputCodecParameters = NULL; - int videoStreamIndex = -1; - var pInputCodec = NULL; - - for (int i = 0; i < nbStreams; i++) { - final var pStream = pInputStreams.getAtIndex(C_POINTER, i); - - final var pVideoCodecParameters = AVStream.codecpar(pStream); - - final var codecType = AVCodecParameters.codec_type(pVideoCodecParameters); - - if (codecType == AVMEDIA_TYPE_VIDEO()) { - videoStreamIndex = i; - pInputCodecParameters = pVideoCodecParameters; - pInputCodec = avcodec_find_decoder(AVCodecParameters.codec_id(pVideoCodecParameters)); - break; - } - } - - if (videoStreamIndex == -1) { - throw new RuntimeException(formatLoadVideoError(fileName, "Can't find video stream")); - } - - if (pInputCodec.equals(NULL)) { - throw new RuntimeException(formatLoadVideoError(fileName, "Can't find decoder")); - } - - pInputCodecCtx = avcodec_alloc_context3(pInputCodec); - - if (avcodec_parameters_to_context(pInputCodecCtx, pInputCodecParameters) != 0) { - throw new RuntimeException(formatLoadVideoError(fileName, "Can't copy codec parameters")); - } - - if (pInputCodecCtx.equals(NULL)) { - throw new RuntimeException(formatLoadVideoError(fileName, "Can't allocate codec context")); - } - - if (avcodec_open2(pInputCodecCtx, pInputCodec, NULL) < 0) { - throw new RuntimeException(formatLoadVideoError(fileName, "Can't open decoder")); - } - - final int frameWidth = AVCodecContext.width(pInputCodecCtx); - final int frameHeight = AVCodecContext.height(pInputCodecCtx); - final int pixelFormat = AVCodecContext.pix_fmt(pInputCodecCtx); - - pInputSwsContext = sws_getCachedContext(NULL, frameWidth, frameHeight, pixelFormat, frameWidth, frameHeight, AV_PIX_FMT_RGB24(), SWS_BILINEAR(), NULL, NULL, NULL); - - if (pInputSwsContext.equals(NULL)) { - throw new RuntimeException(formatLoadVideoError(fileName, "Can't allocate scale context")); - } - - pInputRGBFrame = av_frame_alloc(); - pInputTMPFrame = av_frame_alloc(); - - if (pInputRGBFrame.equals(NULL)) { - throw new RuntimeException(formatLoadVideoError(fileName, "Can't allocate RGB frame")); - } - - if (pInputTMPFrame.equals(NULL)) { - throw new RuntimeException(formatLoadVideoError(fileName, "Can't allocate TMP frame")); - } - - final int rgbByteSize = av_image_get_buffer_size(AV_PIX_FMT_RGB24(), frameWidth, frameHeight, 1); - - pInputRGBBuffer = arena.allocate(ValueLayout.OfByte.JAVA_BYTE, rgbByteSize); - - if (pInputRGBBuffer.equals(NULL)) { - throw new RuntimeException(formatLoadVideoError(fileName, "Can't allocate RGB buffer")); - } - - av_image_fill_arrays(AVFrame.data(pInputRGBFrame), AVFrame.linesize(pInputRGBFrame), pInputRGBBuffer, AV_PIX_FMT_RGB24(), frameWidth, frameHeight, 1); - - pInputPacket = av_packet_alloc(); - - if (pInputPacket.equals(NULL)) { - throw new RuntimeException(formatLoadVideoError(fileName, "Can't allocate packet")); - } - - if (rgbByteSize != 3 * frameWidth * frameHeight) { - throw new RuntimeException(formatLoadVideoError(fileName, "Unexpected buffer size")); - } - - final byte[] buffer = new byte[rgbByteSize]; - - while (av_read_frame(pInputFormatCtx, pInputPacket) == 0) { - if (AVPacket.stream_index(pInputPacket) == videoStreamIndex) { - if (avcodec_send_packet(pInputCodecCtx, pInputPacket) == 0) { - while (avcodec_receive_frame(pInputCodecCtx, pInputTMPFrame) == 0) { - sws_scale(pInputSwsContext, AVFrame.data(pInputTMPFrame), AVFrame.linesize(pInputTMPFrame), 0, frameHeight, AVFrame.data(pInputRGBFrame), AVFrame.linesize(pInputRGBFrame)); - - final var pInputData = AVFrame.data(pInputRGBFrame); - MemorySegment.copy(pInputData.get(C_POINTER, 0), 0, MemorySegment.ofArray(buffer), 0, rgbByteSize); - - consumer.accept(++frameCount, buffer); - } - } - } - } - - if (avcodec_send_packet(pInputCodecCtx, NULL) == 0) { - while (avcodec_receive_frame(pInputCodecCtx, pInputTMPFrame) == 0) { - sws_scale(pInputSwsContext, AVFrame.data(pInputTMPFrame), AVFrame.linesize(pInputTMPFrame), 0, frameHeight, AVFrame.data(pInputRGBFrame), AVFrame.linesize(pInputRGBFrame)); - - final var pInputData = AVFrame.data(pInputRGBFrame); - MemorySegment.copy(pInputData.get(C_POINTER, 0), 0, MemorySegment.ofArray(buffer), 0, rgbByteSize); - - consumer.accept(++frameCount, buffer); - } - } - } finally { - if (!pInputPacket.equals(NULL)) { - av_packet_unref(pInputPacket); - } - - if (!pInputCodecCtx.equals(NULL)) { - avcodec_close(pInputCodecCtx); - } - - if (!pInputSwsContext.equals(NULL)) { - sws_freeContext(pInputSwsContext); - } - - if (!pInputTMPFrame.equals(NULL)) { - av_free(pInputTMPFrame); - } - - if (!pInputRGBFrame.equals(NULL)) { - av_free(pInputRGBFrame); - } - - if (!ppInputFormatCtx.equals(NULL)) { - avformat_close_input(ppInputFormatCtx); - } - } - } - return frameCount; - } - - private static int saveVideo(String fileName, int fps, int frames, int frameWidth, int frameHeight, BiConsumer consumer) { - int frameCount = 0; - - try (var arena = Arena.ofConfined()) { - var pOutputFormatCtx = NULL; - var pOutputCodecCtx = NULL; - var pOutputAVIOCtx = NULL; - var pOutputSwsContext = NULL; - var pOutputRGBFrame = NULL; - var pOutputYUVFrame = NULL; - var pOutputRGBBuffer = NULL; - var pOutputYUVBuffer = NULL; - - try { - pOutputFormatCtx = avformat_alloc_context(); - - if (pOutputFormatCtx.equals(NULL)) { - throw new RuntimeException(formatSaveVideoError(fileName, "Can't allocate format context")); - } - - final var pOutputFileName = arena.allocateFrom(fileName); - - final var pOutputFormat = av_guess_format(NULL, pOutputFileName, NULL); - - if (pOutputFormat.equals(NULL)) { - throw new RuntimeException(formatSaveVideoError(fileName, "Can't allocate output format")); - } - - final int outputVideoCodec = AVOutputFormat.video_codec(pOutputFormat); - - if (outputVideoCodec == AV_CODEC_ID_NONE()) { - throw new RuntimeException(formatSaveVideoError(fileName, "Video codec not found")); - } - - AVFormatContext.oformat(pOutputFormatCtx, pOutputFormat); - - final var pOutputCodec = avcodec_find_encoder(outputVideoCodec); - - if (pOutputCodec.equals(NULL)) { - throw new RuntimeException(formatSaveVideoError(fileName, "Can't find encoder")); - } - - pOutputCodecCtx = avcodec_alloc_context3(pOutputCodec); - - if (pOutputCodecCtx.equals(NULL)) { - throw new RuntimeException(formatSaveVideoError(fileName, "Can't allocate codec context")); - } - - final var pTimeBase = arena.allocate(AVRational.layout()); - AVRational.num(pTimeBase, 1); - AVRational.den(pTimeBase, fps); - - AVCodecContext.codec_id(pOutputCodecCtx, outputVideoCodec); - AVCodecContext.codec_type(pOutputCodecCtx, AVMEDIA_TYPE_VIDEO()); - AVCodecContext.width(pOutputCodecCtx, frameWidth); - AVCodecContext.height(pOutputCodecCtx, frameHeight); - AVCodecContext.pix_fmt(pOutputCodecCtx, AV_PIX_FMT_YUV420P()); - AVCodecContext.time_base(pOutputCodecCtx, pTimeBase); - AVCodecContext.gop_size(pOutputCodecCtx, 4); - AVCodecContext.bit_rate(pOutputCodecCtx, 4096); - AVCodecContext.max_b_frames(pOutputCodecCtx, 2); - - final var pOutputStream = avformat_new_stream(pOutputFormatCtx, pOutputCodec); - - if (pOutputStream.equals(NULL)) { - throw new RuntimeException(formatSaveVideoError(fileName, "Can't create stream")); - } - - if (AVFormatContext.nb_streams(pOutputFormatCtx) != 1) { - throw new RuntimeException(formatSaveVideoError(fileName, "Unexpected number of streams")); - } - - final var pOutputCodecParameters = avcodec_parameters_alloc(); - - if (pOutputCodecParameters.equals(NULL)) { - throw new RuntimeException(formatSaveVideoError(fileName, "Can't allocate codec parameters")); - } - - if (avcodec_parameters_from_context(pOutputCodecParameters, pOutputCodecCtx) != 0) { - throw new RuntimeException(formatLoadVideoError(fileName, "Can't copy codec parameters")); - } - - AVCodecParameters.codec_id(pOutputCodecParameters, outputVideoCodec); - AVCodecParameters.codec_type(pOutputCodecParameters, AVMEDIA_TYPE_VIDEO()); - AVCodecParameters.width(pOutputCodecParameters, frameWidth); - AVCodecParameters.height(pOutputCodecParameters, frameHeight); - AVStream.codecpar(pOutputStream, pOutputCodecParameters); - AVStream.time_base(pOutputStream, pTimeBase); - - final var pOutputProperties = av_stream_new_side_data(pOutputStream, AV_PKT_DATA_CPB_PROPERTIES(), AVCPBProperties.sizeof()); - AVCPBProperties.buffer_size(pOutputProperties, frameWidth * frameHeight * 3L * 2L); - - if (avcodec_open2(pOutputCodecCtx, pOutputCodec, NULL) != 0) { - throw new RuntimeException(formatSaveVideoError(fileName, "Can't open encoder")); - } - - final var ppOutputAVIOCtx = arena.allocate(C_POINTER); - - if (avio_open2(ppOutputAVIOCtx, pOutputFileName, AVIO_FLAG_WRITE(), NULL, NULL) < 0) { - throw new RuntimeException(formatSaveVideoError(fileName, "Can't open file")); - } - - pOutputAVIOCtx = ppOutputAVIOCtx.get(C_POINTER, 0); - - if (pOutputAVIOCtx.equals(NULL)) { - throw new RuntimeException(formatLoadVideoError(fileName, "Can't allocate IO context")); - } - - AVFormatContext.pb(pOutputFormatCtx, pOutputAVIOCtx); - - pOutputSwsContext = sws_getCachedContext(NULL, frameWidth, frameHeight, AV_PIX_FMT_RGB24(), frameWidth, frameHeight, AV_PIX_FMT_YUV420P(), SWS_BILINEAR(), NULL, NULL, NULL); - - if (pOutputSwsContext.equals(NULL)) { - throw new RuntimeException(formatLoadVideoError(fileName, "Can't allocate scale context")); - } - - pOutputRGBFrame = av_frame_alloc(); - pOutputYUVFrame = av_frame_alloc(); - - if (pOutputRGBFrame.equals(NULL)) { - throw new RuntimeException(formatLoadVideoError(fileName, "Can't allocate RGB frame")); - } - - if (pOutputYUVFrame.equals(NULL)) { - throw new RuntimeException(formatLoadVideoError(fileName, "Can't allocate YUV frame")); - } - - AVFrame.width(pOutputRGBFrame, frameWidth); - AVFrame.height(pOutputRGBFrame, frameHeight); - AVFrame.format(pOutputRGBFrame, AV_PIX_FMT_RGB24()); - AVFrame.width(pOutputYUVFrame, frameWidth); - AVFrame.height(pOutputYUVFrame, frameHeight); - AVFrame.format(pOutputYUVFrame, AV_PIX_FMT_YUV420P()); - - av_image_alloc(AVFrame.data(pOutputRGBFrame), AVFrame.linesize(pOutputRGBFrame), frameWidth, frameHeight, AV_PIX_FMT_RGB24(), 1); - av_image_alloc(AVFrame.data(pOutputYUVFrame), AVFrame.linesize(pOutputYUVFrame), frameWidth, frameHeight, AV_PIX_FMT_YUV420P(), 1); - - final int rgbByteSize = av_image_get_buffer_size(AV_PIX_FMT_RGB24(), frameWidth, frameHeight, 1); - final int yuvByteSize = av_image_get_buffer_size(AV_PIX_FMT_YUV420P(), frameWidth, frameHeight, 1); - - pOutputRGBBuffer = arena.allocate(rgbByteSize); - pOutputYUVBuffer = arena.allocate(yuvByteSize); - - if (pOutputRGBBuffer.equals(NULL)) { - throw new RuntimeException(formatLoadVideoError(fileName, "Can't allocate RGB buffer")); - } - - if (pOutputYUVBuffer.equals(NULL)) { - throw new RuntimeException(formatLoadVideoError(fileName, "Can't allocate YUV buffer")); - } - - av_image_fill_arrays(AVFrame.data(pOutputRGBFrame), AVFrame.linesize(pOutputRGBFrame), pOutputRGBBuffer, AV_PIX_FMT_RGB24(), frameWidth, frameHeight, 1); - av_image_fill_arrays(AVFrame.data(pOutputYUVFrame), AVFrame.linesize(pOutputYUVFrame), pOutputYUVBuffer, AV_PIX_FMT_YUV420P(), frameWidth, frameHeight, 1); - - final var pOutputPacket = av_packet_alloc(); - - if (pOutputPacket.equals(NULL)) { - throw new RuntimeException(formatLoadVideoError(fileName, "Can't allocate packet")); - } - - AVPacket.stream_index(pOutputPacket, AVStream.index(pOutputStream)); - - if (rgbByteSize != 3 * frameWidth * frameHeight) { - throw new RuntimeException(formatLoadVideoError(fileName, "Unexpected buffer size")); - } - - final byte[] buffer = new byte[rgbByteSize]; - - avformat_write_header(pOutputFormatCtx, NULL); - - for (int frame = 0; frame < frames; frame++) { - final var pOutputData = AVFrame.data(pOutputRGBFrame); - fillPixels(buffer, frameWidth, frameHeight, ((float) frame / (frames - 1))); - MemorySegment.copy(MemorySegment.ofArray(buffer), 0, pOutputData.get(C_POINTER, 0), 0, rgbByteSize); - - consumer.accept(++frameCount, buffer); - - sws_scale(pOutputSwsContext, AVFrame.data(pOutputRGBFrame), AVFrame.linesize(pOutputRGBFrame), 0, frameHeight, AVFrame.data(pOutputYUVFrame), AVFrame.linesize(pOutputYUVFrame)); - - if (avcodec_send_frame(pOutputCodecCtx, pOutputYUVFrame) == 0) { - while (avcodec_receive_packet(pOutputCodecCtx, pOutputPacket) == 0) { - av_packet_rescale_ts(pOutputPacket, AVCodecContext.time_base(pOutputCodecCtx), AVStream.time_base(pOutputStream)); - av_write_frame(pOutputFormatCtx, pOutputPacket); - } - av_write_frame(pOutputFormatCtx, NULL); - } - } - - if (avcodec_send_frame(pOutputCodecCtx, NULL) == 0) { - while (avcodec_receive_packet(pOutputCodecCtx, pOutputPacket) == 0) { - av_packet_rescale_ts(pOutputPacket, AVCodecContext.time_base(pOutputCodecCtx), AVStream.time_base(pOutputStream)); - av_write_frame(pOutputFormatCtx, pOutputPacket); - } - av_write_frame(pOutputFormatCtx, NULL); - } - - av_write_trailer(pOutputFormatCtx); - } finally { - if (!pOutputAVIOCtx.equals(NULL)) { - avio_close(pOutputAVIOCtx); - } - - if (!pOutputCodecCtx.equals(NULL)) { - avcodec_close(pOutputCodecCtx); - } - - if (!pOutputSwsContext.equals(NULL)) { - sws_freeContext(pOutputSwsContext); - } - - if (!pOutputYUVFrame.equals(NULL)) { - av_free(pOutputYUVFrame); - } - - if (!pOutputRGBFrame.equals(NULL)) { - av_free(pOutputRGBFrame); - } - - if (!pOutputFormatCtx.equals(NULL)) { - avformat_free_context(pOutputFormatCtx); - } - } - } - - return frameCount; - } - - private static String formatLoadVideoError(String fileName, String message) { - return STR."Load video failed (file = \{fileName}). \{message}"; - } - - private static String formatSaveVideoError(String fileName, String message) { - return STR."Save video failed (file = \{fileName}). \{message}"; - } - - private static void fillPixels(byte[] data, int width, int height, float color) { - byte p = (byte) (255 * color); - for (int x = 0; x < width; x += 1) { - for (int y = 0; y < height; y += 1) { - int j = (y * width + x) * 3; - if ((x / 5) % 2 == 0 || (y / 5) % 2 == 1) { - data[j + 0] = p; - data[j + 1] = p; - data[j + 2] = p; - } else { - data[j + 0] = 0; - data[j + 1] = 0; - data[j + 2] = 0; - } - } - } - } - - private static void writeImage(BufferedImage image, int frame, String name) { - if (frame % 10 == 0) { - try (FileOutputStream output = new FileOutputStream(name)) { - ImageIO.write(image, "png", output); - } catch (IOException e) { - e.printStackTrace(); - } - } - } - - private static void copyPixelsIntoImage(byte[] data, BufferedImage image) { - int[] rgb_data = ((DataBufferInt) image.getData().getDataBuffer()).getData(); - for (int t = 0, k = 0; k < data.length; k += 3) { - rgb_data[t++] = 0xFF000000 | ((((int) data[k]) << 16) & 0x00FF0000) | ((((int) data[k]) << 8) & 0x0000FF00) | ((((int) data[k])) & 0x000000FF); - } - image.setRGB(0, 0, image.getWidth(), image.getHeight(), rgb_data, 0, image.getWidth()); - } - - private static int[] loadImage(String file) throws IOException { - BufferedImage image = ImageIO.read(new File(file)); - return image.getRGB(0, 0, image.getWidth(), image.getHeight(), null, 0, image.getWidth()); - } - - private static double error(byte[] data1, byte[] data2) { - double error = 0; - for (int j = 0; j < data1.length; j += 3) { - error += distance(data1, data2, j); - } - return error / (data1.length / 3.0); - } - - private static double distance(byte[] data1, byte[] data2, int i) { - return Math.sqrt(Math.pow(data1[i + 0] - data2[i + 0], 2) + Math.pow(data1[i + 1] - data2[i + 1], 2) + Math.pow(data1[i + 2] - data2[i + 2], 2)); - } - - private static byte[] convertFormat(int[] data) { - byte[] buffer = new byte[data.length * 3]; - for (int j = 0; j < data.length; j += 1) { - buffer[j * 3 + 0] = (byte) (data[j] >> 16); - buffer[j * 3 + 1] = (byte) (data[j] >> 8); - buffer[j * 3 + 2] = (byte) (data[j] >> 0); - } - return buffer; - } - - private static void printFrame(int frameCount, byte[] bytes) { - System.out.println(STR."Frame \{frameCount}"); - } - - private static void printFrame(int frameCount, byte[] bytes, int frames) { - System.out.println(STR."Frame \{frameCount} [ \{frameCount * 100 / frames}% ]"); - } - - private static String getFileName(String file) { - return STR."\{System.getProperty("basedir", ".")}/\{file}"; - } - - private static void saveFrame(Integer frameCount, BufferedImage image, byte[] bytes) { - copyPixelsIntoImage(bytes, image); - writeImage(image, frameCount, getFileName(STR."test-frame-\{frameCount}.png")); - } -} \ No newline at end of file diff --git a/ffmpeg4java-linux/extract.sh b/ffmpeg4java-linux/extract.sh index 938cc29..0b4f75b 100755 --- a/ffmpeg4java-linux/extract.sh +++ b/ffmpeg4java-linux/extract.sh @@ -6,7 +6,7 @@ export PATH=$PATH:${JEXTRACT_HOME}/bin jextract @includes.txt \ --output src/main/java \ - --target-package com.nextbreakpoint.ffmpeg4java.linux \ + --target-package com.nextbreakpoint.ffmpeg4java \ --include-dir "${FFMPEG_HOME}" \ --use-system-load-library \ --library ffmpeg4java \ diff --git a/ffmpeg4java-linux/pom.xml b/ffmpeg4java-linux/pom.xml index 7651bf7..05a20ef 100644 --- a/ffmpeg4java-linux/pom.xml +++ b/ffmpeg4java-linux/pom.xml @@ -4,7 +4,7 @@ com.nextbreakpoint com.nextbreakpoint.ffmpeg4java - 7.0.1-1.1 + 7.0.1-1.2 com.nextbreakpoint.ffmpeg4java.linux jar diff --git a/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVBufferRef.java b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVBufferRef.java similarity index 99% rename from ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVBufferRef.java rename to ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVBufferRef.java index 2bc01fa..798fdec 100644 --- a/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVBufferRef.java +++ b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVBufferRef.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.macos; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVCPBProperties.java b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVCPBProperties.java similarity index 99% rename from ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVCPBProperties.java rename to ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVCPBProperties.java index 8fa8870..93acc2f 100644 --- a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVCPBProperties.java +++ b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVCPBProperties.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.linux; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVChannelCustom.java b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVChannelCustom.java similarity index 99% rename from ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVChannelCustom.java rename to ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVChannelCustom.java index 7759821..0b26dd6 100644 --- a/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVChannelCustom.java +++ b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVChannelCustom.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.macos; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVChannelLayout.java b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVChannelLayout.java similarity index 99% rename from ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVChannelLayout.java rename to ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVChannelLayout.java index 9fa3fab..0892cd3 100644 --- a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVChannelLayout.java +++ b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVChannelLayout.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.linux; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVChapter.java b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVChapter.java similarity index 99% rename from ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVChapter.java rename to ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVChapter.java index 1870d38..7942307 100644 --- a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVChapter.java +++ b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVChapter.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.linux; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVClass.java b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVClass.java similarity index 99% rename from ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVClass.java rename to ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVClass.java index 763628b..ef6c19d 100644 --- a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVClass.java +++ b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVClass.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.linux; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVCodec.java b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVCodec.java similarity index 99% rename from ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVCodec.java rename to ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVCodec.java index 773c9d4..3679060 100644 --- a/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVCodec.java +++ b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVCodec.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.macos; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVCodecContext.java b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVCodecContext.java similarity index 99% rename from ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVCodecContext.java rename to ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVCodecContext.java index 705f791..97258b7 100644 --- a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVCodecContext.java +++ b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVCodecContext.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.linux; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVCodecDescriptor.java b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVCodecDescriptor.java similarity index 99% rename from ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVCodecDescriptor.java rename to ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVCodecDescriptor.java index 84f1d9d..260225e 100644 --- a/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVCodecDescriptor.java +++ b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVCodecDescriptor.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.macos; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVCodecHWConfig.java b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVCodecHWConfig.java similarity index 99% rename from ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVCodecHWConfig.java rename to ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVCodecHWConfig.java index 205fb3c..379dc37 100644 --- a/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVCodecHWConfig.java +++ b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVCodecHWConfig.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.macos; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVCodecParameters.java b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVCodecParameters.java similarity index 99% rename from ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVCodecParameters.java rename to ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVCodecParameters.java index 92b3428..53324a5 100644 --- a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVCodecParameters.java +++ b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVCodecParameters.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.linux; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVCodecParser.java b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVCodecParser.java similarity index 99% rename from ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVCodecParser.java rename to ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVCodecParser.java index 8986ce9..1da05c6 100644 --- a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVCodecParser.java +++ b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVCodecParser.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.linux; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVCodecParserContext.java b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVCodecParserContext.java similarity index 99% rename from ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVCodecParserContext.java rename to ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVCodecParserContext.java index 0aeb52e..adbfaa7 100644 --- a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVCodecParserContext.java +++ b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVCodecParserContext.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.linux; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVComponentDescriptor.java b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVComponentDescriptor.java similarity index 99% rename from ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVComponentDescriptor.java rename to ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVComponentDescriptor.java index c0c3358..a532085 100644 --- a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVComponentDescriptor.java +++ b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVComponentDescriptor.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.linux; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVDeviceInfo.java b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVDeviceInfo.java similarity index 99% rename from ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVDeviceInfo.java rename to ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVDeviceInfo.java index 37764b2..1178f5a 100644 --- a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVDeviceInfo.java +++ b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVDeviceInfo.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.linux; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVDeviceInfoList.java b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVDeviceInfoList.java similarity index 99% rename from ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVDeviceInfoList.java rename to ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVDeviceInfoList.java index 969cf29..a0d75dd 100644 --- a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVDeviceInfoList.java +++ b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVDeviceInfoList.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.linux; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVDeviceRect.java b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVDeviceRect.java similarity index 99% rename from ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVDeviceRect.java rename to ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVDeviceRect.java index 277a912..4cde344 100644 --- a/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVDeviceRect.java +++ b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVDeviceRect.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.macos; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVDictionaryEntry.java b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVDictionaryEntry.java similarity index 99% rename from ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVDictionaryEntry.java rename to ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVDictionaryEntry.java index 8c16009..683cea7 100644 --- a/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVDictionaryEntry.java +++ b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVDictionaryEntry.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.macos; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVFilter.java b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVFilter.java similarity index 99% rename from ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVFilter.java rename to ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVFilter.java index daa3af0..d79ef34 100644 --- a/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVFilter.java +++ b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVFilter.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.macos; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVFilterChain.java b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVFilterChain.java similarity index 99% rename from ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVFilterChain.java rename to ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVFilterChain.java index 9f20c21..6956356 100644 --- a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVFilterChain.java +++ b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVFilterChain.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.linux; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVFilterContext.java b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVFilterContext.java similarity index 99% rename from ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVFilterContext.java rename to ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVFilterContext.java index 3c5ac16..718ef5f 100644 --- a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVFilterContext.java +++ b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVFilterContext.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.linux; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVFilterFormatsConfig.java b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVFilterFormatsConfig.java similarity index 99% rename from ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVFilterFormatsConfig.java rename to ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVFilterFormatsConfig.java index ac612c1..67bbb6c 100644 --- a/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVFilterFormatsConfig.java +++ b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVFilterFormatsConfig.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.macos; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVFilterGraph.java b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVFilterGraph.java similarity index 99% rename from ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVFilterGraph.java rename to ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVFilterGraph.java index 95b2c69..6b49273 100644 --- a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVFilterGraph.java +++ b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVFilterGraph.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.linux; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVFilterGraphSegment.java b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVFilterGraphSegment.java similarity index 99% rename from ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVFilterGraphSegment.java rename to ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVFilterGraphSegment.java index 7d6af2f..714ad18 100644 --- a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVFilterGraphSegment.java +++ b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVFilterGraphSegment.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.linux; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVFilterInOut.java b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVFilterInOut.java similarity index 99% rename from ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVFilterInOut.java rename to ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVFilterInOut.java index 3d3388b..6501b7c 100644 --- a/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVFilterInOut.java +++ b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVFilterInOut.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.macos; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVFilterLink.java b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVFilterLink.java similarity index 99% rename from ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVFilterLink.java rename to ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVFilterLink.java index a98e260..34ad3ad 100644 --- a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVFilterLink.java +++ b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVFilterLink.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.linux; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVFilterPadParams.java b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVFilterPadParams.java similarity index 98% rename from ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVFilterPadParams.java rename to ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVFilterPadParams.java index 3055ff0..b1cd7fd 100644 --- a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVFilterPadParams.java +++ b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVFilterPadParams.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.linux; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVFilterParams.java b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVFilterParams.java similarity index 99% rename from ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVFilterParams.java rename to ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVFilterParams.java index 8e0010c..010b9f0 100644 --- a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVFilterParams.java +++ b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVFilterParams.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.linux; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVFormatContext.java b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVFormatContext.java similarity index 99% rename from ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVFormatContext.java rename to ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVFormatContext.java index 575257e..9f7b07f 100644 --- a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVFormatContext.java +++ b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVFormatContext.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.linux; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVFrame.java b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVFrame.java similarity index 99% rename from ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVFrame.java rename to ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVFrame.java index 6ff33e9..3732841 100644 --- a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVFrame.java +++ b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVFrame.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.linux; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVFrameSideData.java b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVFrameSideData.java similarity index 99% rename from ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVFrameSideData.java rename to ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVFrameSideData.java index 334b05b..aaf3149 100644 --- a/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVFrameSideData.java +++ b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVFrameSideData.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.macos; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVHWAccel.java b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVHWAccel.java similarity index 99% rename from ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVHWAccel.java rename to ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVHWAccel.java index a7354f9..6fd8731 100644 --- a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVHWAccel.java +++ b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVHWAccel.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.linux; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVHWDeviceContext.java b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVHWDeviceContext.java similarity index 99% rename from ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVHWDeviceContext.java rename to ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVHWDeviceContext.java index f5858ab..516c53d 100644 --- a/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVHWDeviceContext.java +++ b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVHWDeviceContext.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.macos; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVHWFramesConstraints.java b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVHWFramesConstraints.java similarity index 99% rename from ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVHWFramesConstraints.java rename to ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVHWFramesConstraints.java index 3801dd9..6d22e25 100644 --- a/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVHWFramesConstraints.java +++ b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVHWFramesConstraints.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.macos; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVHWFramesContext.java b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVHWFramesContext.java similarity index 99% rename from ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVHWFramesContext.java rename to ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVHWFramesContext.java index 607c3da..3497897 100644 --- a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVHWFramesContext.java +++ b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVHWFramesContext.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.linux; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVIOContext.java b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVIOContext.java similarity index 99% rename from ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVIOContext.java rename to ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVIOContext.java index cace408..4c58e98 100644 --- a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVIOContext.java +++ b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVIOContext.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.linux; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVIODirEntry.java b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVIODirEntry.java similarity index 99% rename from ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVIODirEntry.java rename to ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVIODirEntry.java index 17e69ad..1f00ba3 100644 --- a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVIODirEntry.java +++ b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVIODirEntry.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.linux; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVIOInterruptCB.java b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVIOInterruptCB.java similarity index 99% rename from ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVIOInterruptCB.java rename to ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVIOInterruptCB.java index 5ec83eb..a521135 100644 --- a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVIOInterruptCB.java +++ b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVIOInterruptCB.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.linux; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVIndexEntry.java b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVIndexEntry.java similarity index 99% rename from ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVIndexEntry.java rename to ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVIndexEntry.java index b21ad5e..d511d49 100644 --- a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVIndexEntry.java +++ b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVIndexEntry.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.linux; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVInputFormat.java b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVInputFormat.java similarity index 99% rename from ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVInputFormat.java rename to ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVInputFormat.java index 86eb23b..f2defff 100644 --- a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVInputFormat.java +++ b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVInputFormat.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.linux; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVOpenCallback.java b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVOpenCallback.java similarity index 99% rename from ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVOpenCallback.java rename to ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVOpenCallback.java index cc4f5c8..643d7ea 100644 --- a/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVOpenCallback.java +++ b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVOpenCallback.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.macos; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVOption.java b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVOption.java similarity index 99% rename from ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVOption.java rename to ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVOption.java index c8b9a86..c38124f 100644 --- a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVOption.java +++ b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVOption.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.linux; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVOptionArrayDef.java b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVOptionArrayDef.java similarity index 99% rename from ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVOptionArrayDef.java rename to ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVOptionArrayDef.java index 6bd5739..fcfc738 100644 --- a/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVOptionArrayDef.java +++ b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVOptionArrayDef.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.macos; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVOptionRange.java b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVOptionRange.java similarity index 99% rename from ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVOptionRange.java rename to ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVOptionRange.java index 3583050..f30e365 100644 --- a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVOptionRange.java +++ b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVOptionRange.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.linux; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVOptionRanges.java b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVOptionRanges.java similarity index 99% rename from ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVOptionRanges.java rename to ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVOptionRanges.java index d1fb657..1bef27a 100644 --- a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVOptionRanges.java +++ b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVOptionRanges.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.linux; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVOutputFormat.java b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVOutputFormat.java similarity index 99% rename from ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVOutputFormat.java rename to ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVOutputFormat.java index 6fe97a5..33b5c5b 100644 --- a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVOutputFormat.java +++ b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVOutputFormat.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.linux; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVPacket.java b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVPacket.java similarity index 99% rename from ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVPacket.java rename to ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVPacket.java index 1fac98b..56da977 100644 --- a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVPacket.java +++ b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVPacket.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.linux; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVPacketList.java b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVPacketList.java similarity index 99% rename from ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVPacketList.java rename to ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVPacketList.java index c36870f..2107496 100644 --- a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVPacketList.java +++ b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVPacketList.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.linux; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVPacketSideData.java b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVPacketSideData.java similarity index 99% rename from ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVPacketSideData.java rename to ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVPacketSideData.java index 6d97fc5..4dc6da3 100644 --- a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVPacketSideData.java +++ b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVPacketSideData.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.linux; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVPanScan.java b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVPanScan.java similarity index 99% rename from ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVPanScan.java rename to ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVPanScan.java index 3f06651..38575f0 100644 --- a/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVPanScan.java +++ b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVPanScan.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.macos; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVPixFmtDescriptor.java b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVPixFmtDescriptor.java similarity index 99% rename from ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVPixFmtDescriptor.java rename to ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVPixFmtDescriptor.java index c0dc053..6d60a46 100644 --- a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVPixFmtDescriptor.java +++ b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVPixFmtDescriptor.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.linux; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVProbeData.java b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVProbeData.java similarity index 99% rename from ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVProbeData.java rename to ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVProbeData.java index 8cd7037..7424394 100644 --- a/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVProbeData.java +++ b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVProbeData.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.macos; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVProducerReferenceTime.java b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVProducerReferenceTime.java similarity index 99% rename from ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVProducerReferenceTime.java rename to ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVProducerReferenceTime.java index 5787765..7e9d92a 100644 --- a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVProducerReferenceTime.java +++ b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVProducerReferenceTime.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.linux; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVProfile.java b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVProfile.java similarity index 99% rename from ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVProfile.java rename to ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVProfile.java index c54915e..4ed5725 100644 --- a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVProfile.java +++ b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVProfile.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.linux; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVProgram.java b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVProgram.java similarity index 99% rename from ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVProgram.java rename to ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVProgram.java index 610b584..76ce293 100644 --- a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVProgram.java +++ b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVProgram.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.linux; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVRational.java b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVRational.java similarity index 98% rename from ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVRational.java rename to ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVRational.java index 8b9e84a..a3aa8b3 100644 --- a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVRational.java +++ b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVRational.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.linux; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVRegionOfInterest.java b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVRegionOfInterest.java similarity index 99% rename from ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVRegionOfInterest.java rename to ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVRegionOfInterest.java index ae339a0..f9ac4e0 100644 --- a/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVRegionOfInterest.java +++ b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVRegionOfInterest.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.macos; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVStream.java b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVStream.java similarity index 99% rename from ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVStream.java rename to ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVStream.java index 7af3954..b577e52 100644 --- a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVStream.java +++ b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVStream.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.linux; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVStreamGroup.java b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVStreamGroup.java similarity index 99% rename from ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVStreamGroup.java rename to ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVStreamGroup.java index 5ecc8bc..a8fb7b3 100644 --- a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVStreamGroup.java +++ b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVStreamGroup.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.linux; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVStreamGroupTileGrid.java b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVStreamGroupTileGrid.java similarity index 99% rename from ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVStreamGroupTileGrid.java rename to ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVStreamGroupTileGrid.java index f2c59f8..88ba17b 100644 --- a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVStreamGroupTileGrid.java +++ b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVStreamGroupTileGrid.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.linux; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVSubtitle.java b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVSubtitle.java similarity index 99% rename from ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVSubtitle.java rename to ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVSubtitle.java index af69699..ddd0d65 100644 --- a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVSubtitle.java +++ b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVSubtitle.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.linux; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVSubtitleRect.java b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVSubtitleRect.java similarity index 99% rename from ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVSubtitleRect.java rename to ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVSubtitleRect.java index d9aff69..4d5fb00 100644 --- a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVSubtitleRect.java +++ b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/AVSubtitleRect.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.linux; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/Libffmpeg.java b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/Libffmpeg.java similarity index 99% rename from ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/Libffmpeg.java rename to ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/Libffmpeg.java index 5cbdfa8..47dd5f5 100644 --- a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/Libffmpeg.java +++ b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/Libffmpeg.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.linux; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/Libffmpeg_1.java b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/Libffmpeg_1.java similarity index 99% rename from ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/Libffmpeg_1.java rename to ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/Libffmpeg_1.java index cc50590..a301331 100644 --- a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/Libffmpeg_1.java +++ b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/Libffmpeg_1.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.linux; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/Libffmpeg_2.java b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/Libffmpeg_2.java similarity index 99% rename from ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/Libffmpeg_2.java rename to ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/Libffmpeg_2.java index c956c7f..85edea7 100644 --- a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/Libffmpeg_2.java +++ b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/Libffmpeg_2.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.linux; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/RcOverride.java b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/RcOverride.java similarity index 99% rename from ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/RcOverride.java rename to ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/RcOverride.java index 5f131e4..c20f227 100644 --- a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/RcOverride.java +++ b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/RcOverride.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.linux; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/SwsFilter.java b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/SwsFilter.java similarity index 99% rename from ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/SwsFilter.java rename to ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/SwsFilter.java index 21b685d..e34e594 100644 --- a/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/SwsFilter.java +++ b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/SwsFilter.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.macos; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/SwsVector.java b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/SwsVector.java similarity index 99% rename from ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/SwsVector.java rename to ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/SwsVector.java index c6e7d43..3d123ff 100644 --- a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/SwsVector.java +++ b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/SwsVector.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.linux; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/av_buffer_create$free.java b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/av_buffer_create$free.java similarity index 97% rename from ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/av_buffer_create$free.java rename to ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/av_buffer_create$free.java index 5a41e74..77dff7c 100644 --- a/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/av_buffer_create$free.java +++ b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/av_buffer_create$free.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.macos; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/av_buffer_pool_init$alloc.java b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/av_buffer_pool_init$alloc.java similarity index 97% rename from ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/av_buffer_pool_init$alloc.java rename to ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/av_buffer_pool_init$alloc.java index ff17609..f3725d5 100644 --- a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/av_buffer_pool_init$alloc.java +++ b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/av_buffer_pool_init$alloc.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.linux; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/av_buffer_pool_init2$alloc.java b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/av_buffer_pool_init2$alloc.java similarity index 97% rename from ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/av_buffer_pool_init2$alloc.java rename to ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/av_buffer_pool_init2$alloc.java index db9f964..d829ccb 100644 --- a/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/av_buffer_pool_init2$alloc.java +++ b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/av_buffer_pool_init2$alloc.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.macos; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/av_buffer_pool_init2$pool_free.java b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/av_buffer_pool_init2$pool_free.java similarity index 97% rename from ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/av_buffer_pool_init2$pool_free.java rename to ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/av_buffer_pool_init2$pool_free.java index 598d9f2..18ff37b 100644 --- a/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/av_buffer_pool_init2$pool_free.java +++ b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/av_buffer_pool_init2$pool_free.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.macos; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/av_format_control_message.java b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/av_format_control_message.java similarity index 99% rename from ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/av_format_control_message.java rename to ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/av_format_control_message.java index c59e60c..c733ac3 100644 --- a/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/av_format_control_message.java +++ b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/av_format_control_message.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.macos; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/av_intfloat32.java b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/av_intfloat32.java similarity index 98% rename from ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/av_intfloat32.java rename to ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/av_intfloat32.java index 6abe823..e10b45b 100644 --- a/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/av_intfloat32.java +++ b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/av_intfloat32.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.macos; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/av_intfloat64.java b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/av_intfloat64.java similarity index 98% rename from ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/av_intfloat64.java rename to ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/av_intfloat64.java index 51a1710..35d8cfc 100644 --- a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/av_intfloat64.java +++ b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/av_intfloat64.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.linux; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/av_log_set_callback$callback.java b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/av_log_set_callback$callback.java similarity index 97% rename from ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/av_log_set_callback$callback.java rename to ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/av_log_set_callback$callback.java index 57ce694..2345d41 100644 --- a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/av_log_set_callback$callback.java +++ b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/av_log_set_callback$callback.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.linux; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/avcodec_default_execute$func.java b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/avcodec_default_execute$func.java similarity index 97% rename from ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/avcodec_default_execute$func.java rename to ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/avcodec_default_execute$func.java index 68ca6b0..ea9b1f5 100644 --- a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/avcodec_default_execute$func.java +++ b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/avcodec_default_execute$func.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.linux; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/avcodec_default_execute2$func.java b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/avcodec_default_execute2$func.java similarity index 97% rename from ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/avcodec_default_execute2$func.java rename to ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/avcodec_default_execute2$func.java index 5cca743..030cd52 100644 --- a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/avcodec_default_execute2$func.java +++ b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/avcodec_default_execute2$func.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.linux; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/avfilter_action_func.java b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/avfilter_action_func.java similarity index 97% rename from ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/avfilter_action_func.java rename to ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/avfilter_action_func.java index 5f47502..c71c86d 100644 --- a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/avfilter_action_func.java +++ b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/avfilter_action_func.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.linux; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/avfilter_execute_func.java b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/avfilter_execute_func.java similarity index 97% rename from ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/avfilter_execute_func.java rename to ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/avfilter_execute_func.java index ac56e7d..37eaf39 100644 --- a/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/avfilter_execute_func.java +++ b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/avfilter_execute_func.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.macos; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/avio_alloc_context$read_packet.java b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/avio_alloc_context$read_packet.java similarity index 97% rename from ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/avio_alloc_context$read_packet.java rename to ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/avio_alloc_context$read_packet.java index 9a525bb..f6132d7 100644 --- a/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/avio_alloc_context$read_packet.java +++ b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/avio_alloc_context$read_packet.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.macos; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/avio_alloc_context$seek.java b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/avio_alloc_context$seek.java similarity index 97% rename from ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/avio_alloc_context$seek.java rename to ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/avio_alloc_context$seek.java index 68c791f..36210b2 100644 --- a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/avio_alloc_context$seek.java +++ b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/avio_alloc_context$seek.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.linux; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/avio_alloc_context$write_packet.java b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/avio_alloc_context$write_packet.java similarity index 97% rename from ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/avio_alloc_context$write_packet.java rename to ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/avio_alloc_context$write_packet.java index 95374ac..e873d91 100644 --- a/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/avio_alloc_context$write_packet.java +++ b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/avio_alloc_context$write_packet.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.macos; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/max_align_t.java b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/max_align_t.java similarity index 98% rename from ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/max_align_t.java rename to ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/max_align_t.java index 47e914f..16db848 100644 --- a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/max_align_t.java +++ b/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/max_align_t.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.linux; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-linux/src/main/java/module-info.java b/ffmpeg4java-linux/src/main/java/module-info.java index 905e184..baed010 100644 --- a/ffmpeg4java-linux/src/main/java/module-info.java +++ b/ffmpeg4java-linux/src/main/java/module-info.java @@ -1,3 +1,3 @@ -module com.nextbreakpoint.ffmpeg4java.linux { - exports com.nextbreakpoint.ffmpeg4java.linux; +module com.nextbreakpoint.ffmpeg4java { + exports com.nextbreakpoint.ffmpeg4java; } \ No newline at end of file diff --git a/ffmpeg4java-macos-examples/pom.xml b/ffmpeg4java-macos-examples/pom.xml deleted file mode 100644 index 4100d7d..0000000 --- a/ffmpeg4java-macos-examples/pom.xml +++ /dev/null @@ -1,76 +0,0 @@ - - 4.0.0 - - com.nextbreakpoint - com.nextbreakpoint.ffmpeg4java - 7.0.1-1.1 - - com.nextbreakpoint.ffmpeg4java.macos.examples - jar - FFmpeg4Java MacOS Examples - FFmpeg4Java provides a Java wrapper of FFmpeg library - - - com.nextbreakpoint - com.nextbreakpoint.ffmpeg4java.macos - ${project.version} - - - - - - org.apache.maven.plugins - maven-dependency-plugin - - - copy-lib - test-compile - - unpack - - - - - com.nextbreakpoint - com.nextbreakpoint.ffmpeg4java.macos - x86_64 - jar - true - ${project.build.directory}/lib - - - **/*.dylib - - - - - - org.codehaus.mojo - exec-maven-plugin - - - run - test - - exec - - - java - - --enable-preview - --enable-native-access=ALL-UNNAMED - -classpath - - -Djava.library.path=${project.build.directory}/lib - com.nextbreakpoint.ffmpeg4java.macos.ConvertVideoMain - sample.mpg - output.mp4 - - - - - - - - diff --git a/ffmpeg4java-macos-examples/sample.mpg b/ffmpeg4java-macos-examples/sample.mpg deleted file mode 100644 index 6e166a8f55d138b9c358837c499dd5fcbc2c6602..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 776192 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 E0Ii|1HUIzs diff --git a/ffmpeg4java-macos-test/fixture-frame-20.png b/ffmpeg4java-macos-test/fixture-frame-20.png deleted file mode 100644 index ed6c116437a8a581a437a9dab2c9fdefd1145b75..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 56100 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

_x-CakqZ*z+l))OSIdihzL761)060Qc3mlBB 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 &n`7_?TQHu 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 FzXNoi1~dQw diff --git a/ffmpeg4java-macos-test/fixture-frame-30.png b/ffmpeg4java-macos-test/fixture-frame-30.png deleted file mode 100644 index bcd577d0f1e0049a73980adddd42333a494448c7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 43742 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 diff --git a/ffmpeg4java-macos-test/fixture-frame-40.png b/ffmpeg4java-macos-test/fixture-frame-40.png deleted file mode 100644 index 30172128df5fea9a6a14ad471862bf7306e2a8a9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 39977 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 diff --git a/ffmpeg4java-macos-test/pom.xml b/ffmpeg4java-macos-test/pom.xml deleted file mode 100644 index bcafc44..0000000 --- a/ffmpeg4java-macos-test/pom.xml +++ /dev/null @@ -1,50 +0,0 @@ - - 4.0.0 - - com.nextbreakpoint - com.nextbreakpoint.ffmpeg4java - 7.0.1-1.1 - - com.nextbreakpoint.ffmpeg4java.macos.test - jar - FFmpeg4Java MacOS Test - FFmpeg4Java provides a Java wrapper of FFmpeg library - - - com.nextbreakpoint - com.nextbreakpoint.ffmpeg4java.macos - ${project.version} - - - - - - org.apache.maven.plugins - maven-dependency-plugin - - - copy-lib - test-compile - - unpack - - - - - com.nextbreakpoint - com.nextbreakpoint.ffmpeg4java.macos - x86_64 - jar - true - ${project.build.directory}/lib - - - **/*.dylib - - - - - - - diff --git a/ffmpeg4java-macos/extract.sh b/ffmpeg4java-macos/extract.sh index 50fe87b..0b4f75b 100755 --- a/ffmpeg4java-macos/extract.sh +++ b/ffmpeg4java-macos/extract.sh @@ -6,7 +6,7 @@ export PATH=$PATH:${JEXTRACT_HOME}/bin jextract @includes.txt \ --output src/main/java \ - --target-package com.nextbreakpoint.ffmpeg4java.macos \ + --target-package com.nextbreakpoint.ffmpeg4java \ --include-dir "${FFMPEG_HOME}" \ --use-system-load-library \ --library ffmpeg4java \ diff --git a/ffmpeg4java-macos/pom.xml b/ffmpeg4java-macos/pom.xml index 58d7090..bb9ff64 100644 --- a/ffmpeg4java-macos/pom.xml +++ b/ffmpeg4java-macos/pom.xml @@ -4,7 +4,7 @@ com.nextbreakpoint com.nextbreakpoint.ffmpeg4java - 7.0.1-1.1 + 7.0.1-1.2 com.nextbreakpoint.ffmpeg4java.macos jar diff --git a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVBufferRef.java b/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVBufferRef.java similarity index 99% rename from ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVBufferRef.java rename to ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVBufferRef.java index 519a915..798fdec 100644 --- a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVBufferRef.java +++ b/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVBufferRef.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.linux; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVCPBProperties.java b/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVCPBProperties.java similarity index 99% rename from ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVCPBProperties.java rename to ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVCPBProperties.java index a3c5b42..7daf5eb 100644 --- a/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVCPBProperties.java +++ b/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVCPBProperties.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.macos; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVChannelCustom.java b/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVChannelCustom.java similarity index 99% rename from ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVChannelCustom.java rename to ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVChannelCustom.java index ed4741d..0b26dd6 100644 --- a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVChannelCustom.java +++ b/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVChannelCustom.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.linux; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVChannelLayout.java b/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVChannelLayout.java similarity index 99% rename from ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVChannelLayout.java rename to ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVChannelLayout.java index 023deec..b033af9 100644 --- a/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVChannelLayout.java +++ b/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVChannelLayout.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.macos; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVChapter.java b/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVChapter.java similarity index 99% rename from ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVChapter.java rename to ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVChapter.java index e3e9fd5..d4f10e0 100644 --- a/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVChapter.java +++ b/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVChapter.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.macos; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVClass.java b/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVClass.java similarity index 99% rename from ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVClass.java rename to ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVClass.java index 3f06399..ef6c19d 100644 --- a/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVClass.java +++ b/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVClass.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.macos; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVCodec.java b/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVCodec.java similarity index 99% rename from ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVCodec.java rename to ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVCodec.java index ad8d168..3679060 100644 --- a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVCodec.java +++ b/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVCodec.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.linux; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVCodecContext.java b/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVCodecContext.java similarity index 99% rename from ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVCodecContext.java rename to ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVCodecContext.java index a2b3a41..5d3efce 100644 --- a/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVCodecContext.java +++ b/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVCodecContext.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.macos; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVCodecDescriptor.java b/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVCodecDescriptor.java similarity index 99% rename from ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVCodecDescriptor.java rename to ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVCodecDescriptor.java index 8c77062..260225e 100644 --- a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVCodecDescriptor.java +++ b/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVCodecDescriptor.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.linux; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVCodecHWConfig.java b/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVCodecHWConfig.java similarity index 99% rename from ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVCodecHWConfig.java rename to ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVCodecHWConfig.java index ec702de..379dc37 100644 --- a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVCodecHWConfig.java +++ b/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVCodecHWConfig.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.linux; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVCodecParameters.java b/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVCodecParameters.java similarity index 99% rename from ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVCodecParameters.java rename to ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVCodecParameters.java index 5c6b77a..c51b4a0 100644 --- a/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVCodecParameters.java +++ b/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVCodecParameters.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.macos; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVCodecParser.java b/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVCodecParser.java similarity index 99% rename from ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVCodecParser.java rename to ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVCodecParser.java index a7200b2..1da05c6 100644 --- a/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVCodecParser.java +++ b/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVCodecParser.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.macos; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVCodecParserContext.java b/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVCodecParserContext.java similarity index 99% rename from ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVCodecParserContext.java rename to ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVCodecParserContext.java index 3a60961..29f8729 100644 --- a/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVCodecParserContext.java +++ b/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVCodecParserContext.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.macos; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVComponentDescriptor.java b/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVComponentDescriptor.java similarity index 99% rename from ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVComponentDescriptor.java rename to ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVComponentDescriptor.java index 219d7fa..a532085 100644 --- a/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVComponentDescriptor.java +++ b/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVComponentDescriptor.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.macos; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVDeviceInfo.java b/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVDeviceInfo.java similarity index 99% rename from ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVDeviceInfo.java rename to ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVDeviceInfo.java index b341c29..1178f5a 100644 --- a/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVDeviceInfo.java +++ b/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVDeviceInfo.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.macos; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVDeviceInfoList.java b/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVDeviceInfoList.java similarity index 99% rename from ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVDeviceInfoList.java rename to ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVDeviceInfoList.java index 56c7f19..a0d75dd 100644 --- a/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVDeviceInfoList.java +++ b/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVDeviceInfoList.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.macos; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVDeviceRect.java b/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVDeviceRect.java similarity index 99% rename from ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVDeviceRect.java rename to ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVDeviceRect.java index 5086e46..4cde344 100644 --- a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVDeviceRect.java +++ b/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVDeviceRect.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.linux; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVDictionaryEntry.java b/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVDictionaryEntry.java similarity index 99% rename from ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVDictionaryEntry.java rename to ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVDictionaryEntry.java index c7ed97d..683cea7 100644 --- a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVDictionaryEntry.java +++ b/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVDictionaryEntry.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.linux; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVFilter.java b/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVFilter.java similarity index 99% rename from ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVFilter.java rename to ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVFilter.java index 281a5f9..d79ef34 100644 --- a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVFilter.java +++ b/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVFilter.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.linux; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVFilterChain.java b/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVFilterChain.java similarity index 99% rename from ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVFilterChain.java rename to ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVFilterChain.java index 28d1dfe..6956356 100644 --- a/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVFilterChain.java +++ b/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVFilterChain.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.macos; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVFilterContext.java b/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVFilterContext.java similarity index 99% rename from ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVFilterContext.java rename to ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVFilterContext.java index a6231d1..718ef5f 100644 --- a/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVFilterContext.java +++ b/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVFilterContext.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.macos; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVFilterFormatsConfig.java b/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVFilterFormatsConfig.java similarity index 99% rename from ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVFilterFormatsConfig.java rename to ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVFilterFormatsConfig.java index 0c8d93d..67bbb6c 100644 --- a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVFilterFormatsConfig.java +++ b/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVFilterFormatsConfig.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.linux; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVFilterGraph.java b/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVFilterGraph.java similarity index 99% rename from ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVFilterGraph.java rename to ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVFilterGraph.java index fa188e7..6b49273 100644 --- a/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVFilterGraph.java +++ b/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVFilterGraph.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.macos; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVFilterGraphSegment.java b/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVFilterGraphSegment.java similarity index 99% rename from ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVFilterGraphSegment.java rename to ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVFilterGraphSegment.java index 8d6f4c9..714ad18 100644 --- a/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVFilterGraphSegment.java +++ b/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVFilterGraphSegment.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.macos; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVFilterInOut.java b/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVFilterInOut.java similarity index 99% rename from ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVFilterInOut.java rename to ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVFilterInOut.java index 3659f80..6501b7c 100644 --- a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVFilterInOut.java +++ b/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVFilterInOut.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.linux; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVFilterLink.java b/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVFilterLink.java similarity index 99% rename from ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVFilterLink.java rename to ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVFilterLink.java index 895a183..1fa3a85 100644 --- a/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVFilterLink.java +++ b/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVFilterLink.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.macos; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVFilterPadParams.java b/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVFilterPadParams.java similarity index 98% rename from ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVFilterPadParams.java rename to ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVFilterPadParams.java index 8780296..b1cd7fd 100644 --- a/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVFilterPadParams.java +++ b/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVFilterPadParams.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.macos; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVFilterParams.java b/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVFilterParams.java similarity index 99% rename from ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVFilterParams.java rename to ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVFilterParams.java index 528c386..010b9f0 100644 --- a/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVFilterParams.java +++ b/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVFilterParams.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.macos; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVFormatContext.java b/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVFormatContext.java similarity index 99% rename from ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVFormatContext.java rename to ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVFormatContext.java index 63b4c6d..2a0e983 100644 --- a/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVFormatContext.java +++ b/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVFormatContext.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.macos; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVFrame.java b/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVFrame.java similarity index 99% rename from ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVFrame.java rename to ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVFrame.java index 5009f43..4073c09 100644 --- a/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVFrame.java +++ b/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVFrame.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.macos; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVFrameSideData.java b/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVFrameSideData.java similarity index 99% rename from ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVFrameSideData.java rename to ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVFrameSideData.java index 99fa7c7..aaf3149 100644 --- a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVFrameSideData.java +++ b/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVFrameSideData.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.linux; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVHWAccel.java b/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVHWAccel.java similarity index 99% rename from ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVHWAccel.java rename to ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVHWAccel.java index bb03155..6fd8731 100644 --- a/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVHWAccel.java +++ b/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVHWAccel.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.macos; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVHWDeviceContext.java b/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVHWDeviceContext.java similarity index 99% rename from ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVHWDeviceContext.java rename to ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVHWDeviceContext.java index 27fd7b1..516c53d 100644 --- a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVHWDeviceContext.java +++ b/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVHWDeviceContext.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.linux; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVHWFramesConstraints.java b/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVHWFramesConstraints.java similarity index 99% rename from ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVHWFramesConstraints.java rename to ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVHWFramesConstraints.java index 87af5d0..6d22e25 100644 --- a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVHWFramesConstraints.java +++ b/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVHWFramesConstraints.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.linux; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVHWFramesContext.java b/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVHWFramesContext.java similarity index 99% rename from ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVHWFramesContext.java rename to ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVHWFramesContext.java index 49f350c..3497897 100644 --- a/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVHWFramesContext.java +++ b/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVHWFramesContext.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.macos; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVIOContext.java b/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVIOContext.java similarity index 99% rename from ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVIOContext.java rename to ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVIOContext.java index 343d59e..184b5fb 100644 --- a/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVIOContext.java +++ b/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVIOContext.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.macos; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVIODirEntry.java b/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVIODirEntry.java similarity index 99% rename from ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVIODirEntry.java rename to ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVIODirEntry.java index 688c507..e64a08e 100644 --- a/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVIODirEntry.java +++ b/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVIODirEntry.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.macos; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVIOInterruptCB.java b/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVIOInterruptCB.java similarity index 99% rename from ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVIOInterruptCB.java rename to ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVIOInterruptCB.java index 32ec6d9..a521135 100644 --- a/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVIOInterruptCB.java +++ b/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVIOInterruptCB.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.macos; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVIndexEntry.java b/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVIndexEntry.java similarity index 99% rename from ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVIndexEntry.java rename to ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVIndexEntry.java index d6cb70a..fda9437 100644 --- a/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVIndexEntry.java +++ b/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVIndexEntry.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.macos; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVInputFormat.java b/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVInputFormat.java similarity index 99% rename from ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVInputFormat.java rename to ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVInputFormat.java index 1fa18d0..f2defff 100644 --- a/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVInputFormat.java +++ b/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVInputFormat.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.macos; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVOpenCallback.java b/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVOpenCallback.java similarity index 99% rename from ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVOpenCallback.java rename to ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVOpenCallback.java index a59d3e4..643d7ea 100644 --- a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVOpenCallback.java +++ b/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVOpenCallback.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.linux; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVOption.java b/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVOption.java similarity index 99% rename from ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVOption.java rename to ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVOption.java index f34965b..135b7c0 100644 --- a/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVOption.java +++ b/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVOption.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.macos; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVOptionArrayDef.java b/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVOptionArrayDef.java similarity index 99% rename from ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVOptionArrayDef.java rename to ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVOptionArrayDef.java index 93ca0f5..fcfc738 100644 --- a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVOptionArrayDef.java +++ b/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVOptionArrayDef.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.linux; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVOptionRange.java b/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVOptionRange.java similarity index 99% rename from ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVOptionRange.java rename to ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVOptionRange.java index aad3968..f30e365 100644 --- a/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVOptionRange.java +++ b/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVOptionRange.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.macos; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVOptionRanges.java b/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVOptionRanges.java similarity index 99% rename from ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVOptionRanges.java rename to ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVOptionRanges.java index d947d0f..1bef27a 100644 --- a/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVOptionRanges.java +++ b/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVOptionRanges.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.macos; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVOutputFormat.java b/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVOutputFormat.java similarity index 99% rename from ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVOutputFormat.java rename to ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVOutputFormat.java index ff0efc1..33b5c5b 100644 --- a/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVOutputFormat.java +++ b/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVOutputFormat.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.macos; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVPacket.java b/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVPacket.java similarity index 99% rename from ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVPacket.java rename to ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVPacket.java index 790ffd5..e80349a 100644 --- a/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVPacket.java +++ b/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVPacket.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.macos; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVPacketList.java b/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVPacketList.java similarity index 99% rename from ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVPacketList.java rename to ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVPacketList.java index 67735c0..2107496 100644 --- a/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVPacketList.java +++ b/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVPacketList.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.macos; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVPacketSideData.java b/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVPacketSideData.java similarity index 99% rename from ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVPacketSideData.java rename to ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVPacketSideData.java index 8130f21..4dc6da3 100644 --- a/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVPacketSideData.java +++ b/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVPacketSideData.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.macos; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVPanScan.java b/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVPanScan.java similarity index 99% rename from ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVPanScan.java rename to ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVPanScan.java index 891353d..38575f0 100644 --- a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVPanScan.java +++ b/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVPanScan.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.linux; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVPixFmtDescriptor.java b/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVPixFmtDescriptor.java similarity index 99% rename from ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVPixFmtDescriptor.java rename to ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVPixFmtDescriptor.java index 92c5095..114be23 100644 --- a/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVPixFmtDescriptor.java +++ b/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVPixFmtDescriptor.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.macos; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVProbeData.java b/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVProbeData.java similarity index 99% rename from ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVProbeData.java rename to ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVProbeData.java index bc95abf..7424394 100644 --- a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVProbeData.java +++ b/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVProbeData.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.linux; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVProducerReferenceTime.java b/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVProducerReferenceTime.java similarity index 99% rename from ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVProducerReferenceTime.java rename to ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVProducerReferenceTime.java index 6ef7481..eb9b61e 100644 --- a/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVProducerReferenceTime.java +++ b/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVProducerReferenceTime.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.macos; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVProfile.java b/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVProfile.java similarity index 99% rename from ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVProfile.java rename to ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVProfile.java index e52f029..4ed5725 100644 --- a/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVProfile.java +++ b/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVProfile.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.macos; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVProgram.java b/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVProgram.java similarity index 99% rename from ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVProgram.java rename to ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVProgram.java index 9f60122..d8d3b76 100644 --- a/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVProgram.java +++ b/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVProgram.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.macos; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVRational.java b/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVRational.java similarity index 98% rename from ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVRational.java rename to ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVRational.java index 76a242d..a3aa8b3 100644 --- a/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVRational.java +++ b/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVRational.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.macos; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVRegionOfInterest.java b/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVRegionOfInterest.java similarity index 99% rename from ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVRegionOfInterest.java rename to ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVRegionOfInterest.java index 81c162a..f9ac4e0 100644 --- a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/AVRegionOfInterest.java +++ b/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVRegionOfInterest.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.linux; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVStream.java b/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVStream.java similarity index 99% rename from ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVStream.java rename to ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVStream.java index 191a20c..bacf319 100644 --- a/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVStream.java +++ b/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVStream.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.macos; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVStreamGroup.java b/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVStreamGroup.java similarity index 99% rename from ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVStreamGroup.java rename to ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVStreamGroup.java index 966fb0c..670851a 100644 --- a/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVStreamGroup.java +++ b/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVStreamGroup.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.macos; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVStreamGroupTileGrid.java b/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVStreamGroupTileGrid.java similarity index 99% rename from ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVStreamGroupTileGrid.java rename to ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVStreamGroupTileGrid.java index 953794b..88ba17b 100644 --- a/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVStreamGroupTileGrid.java +++ b/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVStreamGroupTileGrid.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.macos; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVSubtitle.java b/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVSubtitle.java similarity index 99% rename from ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVSubtitle.java rename to ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVSubtitle.java index 588d10b..de2c6f0 100644 --- a/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVSubtitle.java +++ b/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVSubtitle.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.macos; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVSubtitleRect.java b/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVSubtitleRect.java similarity index 99% rename from ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVSubtitleRect.java rename to ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVSubtitleRect.java index 86fc073..4d5fb00 100644 --- a/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/AVSubtitleRect.java +++ b/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/AVSubtitleRect.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.macos; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/Libffmpeg.java b/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/Libffmpeg.java similarity index 99% rename from ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/Libffmpeg.java rename to ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/Libffmpeg.java index 79c543c..7c55b7c 100644 --- a/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/Libffmpeg.java +++ b/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/Libffmpeg.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.macos; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/Libffmpeg_1.java b/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/Libffmpeg_1.java similarity index 99% rename from ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/Libffmpeg_1.java rename to ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/Libffmpeg_1.java index d1b6b04..891241b 100644 --- a/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/Libffmpeg_1.java +++ b/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/Libffmpeg_1.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.macos; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/Libffmpeg_2.java b/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/Libffmpeg_2.java similarity index 99% rename from ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/Libffmpeg_2.java rename to ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/Libffmpeg_2.java index e8b6c05..bf8a5ea 100644 --- a/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/Libffmpeg_2.java +++ b/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/Libffmpeg_2.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.macos; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/RcOverride.java b/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/RcOverride.java similarity index 99% rename from ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/RcOverride.java rename to ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/RcOverride.java index ad8a1ee..c20f227 100644 --- a/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/RcOverride.java +++ b/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/RcOverride.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.macos; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/SwsFilter.java b/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/SwsFilter.java similarity index 99% rename from ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/SwsFilter.java rename to ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/SwsFilter.java index 56a07ed..e34e594 100644 --- a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/SwsFilter.java +++ b/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/SwsFilter.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.linux; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/SwsVector.java b/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/SwsVector.java similarity index 99% rename from ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/SwsVector.java rename to ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/SwsVector.java index 5cca146..3d123ff 100644 --- a/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/SwsVector.java +++ b/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/SwsVector.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.macos; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/av_buffer_create$free.java b/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/av_buffer_create$free.java similarity index 97% rename from ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/av_buffer_create$free.java rename to ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/av_buffer_create$free.java index c4e1b2f..77dff7c 100644 --- a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/av_buffer_create$free.java +++ b/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/av_buffer_create$free.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.linux; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/av_buffer_pool_init$alloc.java b/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/av_buffer_pool_init$alloc.java similarity index 97% rename from ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/av_buffer_pool_init$alloc.java rename to ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/av_buffer_pool_init$alloc.java index 2d7d8d5..f3725d5 100644 --- a/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/av_buffer_pool_init$alloc.java +++ b/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/av_buffer_pool_init$alloc.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.macos; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/av_buffer_pool_init2$alloc.java b/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/av_buffer_pool_init2$alloc.java similarity index 97% rename from ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/av_buffer_pool_init2$alloc.java rename to ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/av_buffer_pool_init2$alloc.java index c7aa86f..d829ccb 100644 --- a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/av_buffer_pool_init2$alloc.java +++ b/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/av_buffer_pool_init2$alloc.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.linux; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/av_buffer_pool_init2$pool_free.java b/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/av_buffer_pool_init2$pool_free.java similarity index 97% rename from ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/av_buffer_pool_init2$pool_free.java rename to ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/av_buffer_pool_init2$pool_free.java index 325c697..18ff37b 100644 --- a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/av_buffer_pool_init2$pool_free.java +++ b/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/av_buffer_pool_init2$pool_free.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.linux; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/av_format_control_message.java b/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/av_format_control_message.java similarity index 99% rename from ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/av_format_control_message.java rename to ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/av_format_control_message.java index de585b5..c733ac3 100644 --- a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/av_format_control_message.java +++ b/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/av_format_control_message.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.linux; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/av_intfloat32.java b/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/av_intfloat32.java similarity index 98% rename from ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/av_intfloat32.java rename to ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/av_intfloat32.java index 151abd8..e10b45b 100644 --- a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/av_intfloat32.java +++ b/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/av_intfloat32.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.linux; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/av_intfloat64.java b/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/av_intfloat64.java similarity index 98% rename from ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/av_intfloat64.java rename to ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/av_intfloat64.java index c0c080a..5c9c235 100644 --- a/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/av_intfloat64.java +++ b/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/av_intfloat64.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.macos; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/av_log_set_callback$callback.java b/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/av_log_set_callback$callback.java similarity index 97% rename from ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/av_log_set_callback$callback.java rename to ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/av_log_set_callback$callback.java index c0a21d2..2345d41 100644 --- a/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/av_log_set_callback$callback.java +++ b/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/av_log_set_callback$callback.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.macos; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/avcodec_default_execute$func.java b/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/avcodec_default_execute$func.java similarity index 97% rename from ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/avcodec_default_execute$func.java rename to ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/avcodec_default_execute$func.java index b6dcd11..ea9b1f5 100644 --- a/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/avcodec_default_execute$func.java +++ b/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/avcodec_default_execute$func.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.macos; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/avcodec_default_execute2$func.java b/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/avcodec_default_execute2$func.java similarity index 97% rename from ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/avcodec_default_execute2$func.java rename to ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/avcodec_default_execute2$func.java index 19563f2..030cd52 100644 --- a/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/avcodec_default_execute2$func.java +++ b/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/avcodec_default_execute2$func.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.macos; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/avfilter_action_func.java b/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/avfilter_action_func.java similarity index 97% rename from ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/avfilter_action_func.java rename to ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/avfilter_action_func.java index 3ec1b31..c71c86d 100644 --- a/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/avfilter_action_func.java +++ b/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/avfilter_action_func.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.macos; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/avfilter_execute_func.java b/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/avfilter_execute_func.java similarity index 97% rename from ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/avfilter_execute_func.java rename to ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/avfilter_execute_func.java index 441a069..37eaf39 100644 --- a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/avfilter_execute_func.java +++ b/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/avfilter_execute_func.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.linux; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/avio_alloc_context$read_packet.java b/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/avio_alloc_context$read_packet.java similarity index 97% rename from ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/avio_alloc_context$read_packet.java rename to ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/avio_alloc_context$read_packet.java index e4aaeb5..f6132d7 100644 --- a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/avio_alloc_context$read_packet.java +++ b/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/avio_alloc_context$read_packet.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.linux; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/avio_alloc_context$seek.java b/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/avio_alloc_context$seek.java similarity index 97% rename from ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/avio_alloc_context$seek.java rename to ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/avio_alloc_context$seek.java index 9df6865..25aea59 100644 --- a/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/macos/avio_alloc_context$seek.java +++ b/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/avio_alloc_context$seek.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.macos; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/avio_alloc_context$write_packet.java b/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/avio_alloc_context$write_packet.java similarity index 97% rename from ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/avio_alloc_context$write_packet.java rename to ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/avio_alloc_context$write_packet.java index 86528ff..e873d91 100644 --- a/ffmpeg4java-linux/src/main/java/com/nextbreakpoint/ffmpeg4java/linux/avio_alloc_context$write_packet.java +++ b/ffmpeg4java-macos/src/main/java/com/nextbreakpoint/ffmpeg4java/avio_alloc_context$write_packet.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.linux; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-macos/src/main/java/module-info.java b/ffmpeg4java-macos/src/main/java/module-info.java index bd8f98b..baed010 100644 --- a/ffmpeg4java-macos/src/main/java/module-info.java +++ b/ffmpeg4java-macos/src/main/java/module-info.java @@ -1,3 +1,3 @@ -module com.nextbreakpoint.ffmpeg4java.macos { - exports com.nextbreakpoint.ffmpeg4java.macos; +module com.nextbreakpoint.ffmpeg4java { + exports com.nextbreakpoint.ffmpeg4java; } \ No newline at end of file diff --git a/ffmpeg4java-linux-test/fixture-frame-10.png b/ffmpeg4java-tests/fixture-frame-10.png similarity index 100% rename from ffmpeg4java-linux-test/fixture-frame-10.png rename to ffmpeg4java-tests/fixture-frame-10.png diff --git a/ffmpeg4java-linux-test/fixture-frame-20.png b/ffmpeg4java-tests/fixture-frame-20.png similarity index 100% rename from ffmpeg4java-linux-test/fixture-frame-20.png rename to ffmpeg4java-tests/fixture-frame-20.png diff --git a/ffmpeg4java-linux-test/fixture-frame-30.png b/ffmpeg4java-tests/fixture-frame-30.png similarity index 100% rename from ffmpeg4java-linux-test/fixture-frame-30.png rename to ffmpeg4java-tests/fixture-frame-30.png diff --git a/ffmpeg4java-linux-test/fixture-frame-40.png b/ffmpeg4java-tests/fixture-frame-40.png similarity index 100% rename from ffmpeg4java-linux-test/fixture-frame-40.png rename to ffmpeg4java-tests/fixture-frame-40.png diff --git a/ffmpeg4java-linux-test/fixture-video-48.mpg b/ffmpeg4java-tests/fixture-video-48.mpg similarity index 100% rename from ffmpeg4java-linux-test/fixture-video-48.mpg rename to ffmpeg4java-tests/fixture-video-48.mpg diff --git a/ffmpeg4java-tests/pom.xml b/ffmpeg4java-tests/pom.xml new file mode 100644 index 0000000..570870f --- /dev/null +++ b/ffmpeg4java-tests/pom.xml @@ -0,0 +1,147 @@ + + 4.0.0 + + com.nextbreakpoint + com.nextbreakpoint.ffmpeg4java + 7.0.1-1.2 + + com.nextbreakpoint.ffmpeg4java.tests + jar + FFmpeg4Java Tests + FFmpeg4Java provides a Java wrapper of FFmpeg library + + + macos + + x86_64 + macos + + + + com.nextbreakpoint + com.nextbreakpoint.ffmpeg4java.macos + ${project.version} + + + + + + org.apache.maven.plugins + maven-dependency-plugin + + + copy-lib + test-compile + + unpack + + + + + com.nextbreakpoint + com.nextbreakpoint.ffmpeg4java.macos + x86_64 + jar + true + ${project.build.directory}/lib + + + **/*.dylib + + + + + + + + + linux + + x86_64 + linux + + + + com.nextbreakpoint + com.nextbreakpoint.ffmpeg4java.linux + ${project.version} + + + + + + org.apache.maven.plugins + maven-dependency-plugin + + + copy-lib + test-compile + + unpack + + + + + com.nextbreakpoint + com.nextbreakpoint.ffmpeg4java.linux + x86_64 + jar + true + ${project.build.directory}/lib + + + **/*.so + + + + + + + + + windows + + x86_64 + windows + + + + com.nextbreakpoint + com.nextbreakpoint.ffmpeg4java.windows + ${project.version} + + + + + + org.apache.maven.plugins + maven-dependency-plugin + + + copy-lib + test-compile + + unpack + + + + + com.nextbreakpoint + com.nextbreakpoint.ffmpeg4java.windows + x86_64 + jar + true + ${project.build.directory}/lib + + + **/*.dll + + + + + + + + + diff --git a/ffmpeg4java-macos-test/src/test/java/com/nextbreakpoint/ffmpeg4java/macos/FFmpeg4JavaTest.java b/ffmpeg4java-tests/src/test/java/com/nextbreakpoint/ffmpeg4java/FFmpeg4JavaTest.java similarity index 73% rename from ffmpeg4java-macos-test/src/test/java/com/nextbreakpoint/ffmpeg4java/macos/FFmpeg4JavaTest.java rename to ffmpeg4java-tests/src/test/java/com/nextbreakpoint/ffmpeg4java/FFmpeg4JavaTest.java index 458400d..00048c1 100644 --- a/ffmpeg4java-macos-test/src/test/java/com/nextbreakpoint/ffmpeg4java/macos/FFmpeg4JavaTest.java +++ b/ffmpeg4java-tests/src/test/java/com/nextbreakpoint/ffmpeg4java/FFmpeg4JavaTest.java @@ -1,4 +1,4 @@ -package com.nextbreakpoint.ffmpeg4java.macos; +package com.nextbreakpoint.ffmpeg4java; import org.assertj.core.data.Offset; import org.junit.jupiter.api.Test; @@ -14,52 +14,52 @@ import java.lang.foreign.ValueLayout; import java.util.function.BiConsumer; -import static com.nextbreakpoint.ffmpeg4java.macos.Libffmpeg.avcodec_alloc_context3; -import static com.nextbreakpoint.ffmpeg4java.macos.Libffmpeg.avcodec_close; -import static com.nextbreakpoint.ffmpeg4java.macos.Libffmpeg.avcodec_open2; -import static com.nextbreakpoint.ffmpeg4java.macos.Libffmpeg.avcodec_parameters_from_context; -import static com.nextbreakpoint.ffmpeg4java.macos.Libffmpeg.avcodec_parameters_to_context; -import static com.nextbreakpoint.ffmpeg4java.macos.Libffmpeg.avcodec_receive_frame; -import static com.nextbreakpoint.ffmpeg4java.macos.Libffmpeg.avcodec_receive_packet; -import static com.nextbreakpoint.ffmpeg4java.macos.Libffmpeg.avcodec_send_frame; -import static com.nextbreakpoint.ffmpeg4java.macos.Libffmpeg.avcodec_send_packet; -import static com.nextbreakpoint.ffmpeg4java.macos.Libffmpeg.sws_freeContext; -import static com.nextbreakpoint.ffmpeg4java.macos.Libffmpeg.sws_getCachedContext; -import static com.nextbreakpoint.ffmpeg4java.macos.Libffmpeg.sws_scale; -import static com.nextbreakpoint.ffmpeg4java.macos.Libffmpeg_1.AV_CODEC_ID_NONE; -import static com.nextbreakpoint.ffmpeg4java.macos.Libffmpeg_1.AV_PKT_DATA_CPB_PROPERTIES; -import static com.nextbreakpoint.ffmpeg4java.macos.Libffmpeg_1.av_dump_format; -import static com.nextbreakpoint.ffmpeg4java.macos.Libffmpeg_1.av_frame_alloc; -import static com.nextbreakpoint.ffmpeg4java.macos.Libffmpeg_1.av_guess_format; -import static com.nextbreakpoint.ffmpeg4java.macos.Libffmpeg_1.av_packet_alloc; -import static com.nextbreakpoint.ffmpeg4java.macos.Libffmpeg_1.av_packet_rescale_ts; -import static com.nextbreakpoint.ffmpeg4java.macos.Libffmpeg_1.av_packet_unref; -import static com.nextbreakpoint.ffmpeg4java.macos.Libffmpeg_1.av_read_frame; -import static com.nextbreakpoint.ffmpeg4java.macos.Libffmpeg_1.av_stream_new_side_data; -import static com.nextbreakpoint.ffmpeg4java.macos.Libffmpeg_1.av_write_frame; -import static com.nextbreakpoint.ffmpeg4java.macos.Libffmpeg_1.av_write_trailer; -import static com.nextbreakpoint.ffmpeg4java.macos.Libffmpeg_1.avcodec_find_decoder; -import static com.nextbreakpoint.ffmpeg4java.macos.Libffmpeg_1.avcodec_find_encoder; -import static com.nextbreakpoint.ffmpeg4java.macos.Libffmpeg_1.avcodec_parameters_alloc; -import static com.nextbreakpoint.ffmpeg4java.macos.Libffmpeg_1.avformat_alloc_context; -import static com.nextbreakpoint.ffmpeg4java.macos.Libffmpeg_1.avformat_close_input; -import static com.nextbreakpoint.ffmpeg4java.macos.Libffmpeg_1.avformat_find_stream_info; -import static com.nextbreakpoint.ffmpeg4java.macos.Libffmpeg_1.avformat_free_context; -import static com.nextbreakpoint.ffmpeg4java.macos.Libffmpeg_1.avformat_new_stream; -import static com.nextbreakpoint.ffmpeg4java.macos.Libffmpeg_1.avformat_open_input; -import static com.nextbreakpoint.ffmpeg4java.macos.Libffmpeg_1.avformat_write_header; -import static com.nextbreakpoint.ffmpeg4java.macos.Libffmpeg_1.avio_close; -import static com.nextbreakpoint.ffmpeg4java.macos.Libffmpeg_1.avio_open2; -import static com.nextbreakpoint.ffmpeg4java.macos.Libffmpeg_2.AVIO_FLAG_WRITE; -import static com.nextbreakpoint.ffmpeg4java.macos.Libffmpeg_2.AVMEDIA_TYPE_VIDEO; -import static com.nextbreakpoint.ffmpeg4java.macos.Libffmpeg_2.AV_PIX_FMT_RGB24; -import static com.nextbreakpoint.ffmpeg4java.macos.Libffmpeg_2.AV_PIX_FMT_YUV420P; -import static com.nextbreakpoint.ffmpeg4java.macos.Libffmpeg_2.C_POINTER; -import static com.nextbreakpoint.ffmpeg4java.macos.Libffmpeg_2.SWS_BILINEAR; -import static com.nextbreakpoint.ffmpeg4java.macos.Libffmpeg_2.av_free; -import static com.nextbreakpoint.ffmpeg4java.macos.Libffmpeg_2.av_image_alloc; -import static com.nextbreakpoint.ffmpeg4java.macos.Libffmpeg_2.av_image_fill_arrays; -import static com.nextbreakpoint.ffmpeg4java.macos.Libffmpeg_2.av_image_get_buffer_size; +import static com.nextbreakpoint.ffmpeg4java.Libffmpeg.avcodec_alloc_context3; +import static com.nextbreakpoint.ffmpeg4java.Libffmpeg.avcodec_close; +import static com.nextbreakpoint.ffmpeg4java.Libffmpeg.avcodec_open2; +import static com.nextbreakpoint.ffmpeg4java.Libffmpeg.avcodec_parameters_from_context; +import static com.nextbreakpoint.ffmpeg4java.Libffmpeg.avcodec_parameters_to_context; +import static com.nextbreakpoint.ffmpeg4java.Libffmpeg.avcodec_receive_frame; +import static com.nextbreakpoint.ffmpeg4java.Libffmpeg.avcodec_receive_packet; +import static com.nextbreakpoint.ffmpeg4java.Libffmpeg.avcodec_send_frame; +import static com.nextbreakpoint.ffmpeg4java.Libffmpeg.avcodec_send_packet; +import static com.nextbreakpoint.ffmpeg4java.Libffmpeg.sws_freeContext; +import static com.nextbreakpoint.ffmpeg4java.Libffmpeg.sws_getCachedContext; +import static com.nextbreakpoint.ffmpeg4java.Libffmpeg.sws_scale; +import static com.nextbreakpoint.ffmpeg4java.Libffmpeg_1.AV_CODEC_ID_NONE; +import static com.nextbreakpoint.ffmpeg4java.Libffmpeg_1.AV_PKT_DATA_CPB_PROPERTIES; +import static com.nextbreakpoint.ffmpeg4java.Libffmpeg_1.av_dump_format; +import static com.nextbreakpoint.ffmpeg4java.Libffmpeg_1.av_frame_alloc; +import static com.nextbreakpoint.ffmpeg4java.Libffmpeg_1.av_guess_format; +import static com.nextbreakpoint.ffmpeg4java.Libffmpeg_1.av_packet_alloc; +import static com.nextbreakpoint.ffmpeg4java.Libffmpeg_1.av_packet_rescale_ts; +import static com.nextbreakpoint.ffmpeg4java.Libffmpeg_1.av_packet_unref; +import static com.nextbreakpoint.ffmpeg4java.Libffmpeg_1.av_read_frame; +import static com.nextbreakpoint.ffmpeg4java.Libffmpeg_1.av_stream_new_side_data; +import static com.nextbreakpoint.ffmpeg4java.Libffmpeg_1.av_write_frame; +import static com.nextbreakpoint.ffmpeg4java.Libffmpeg_1.av_write_trailer; +import static com.nextbreakpoint.ffmpeg4java.Libffmpeg_1.avcodec_find_decoder; +import static com.nextbreakpoint.ffmpeg4java.Libffmpeg_1.avcodec_find_encoder; +import static com.nextbreakpoint.ffmpeg4java.Libffmpeg_1.avcodec_parameters_alloc; +import static com.nextbreakpoint.ffmpeg4java.Libffmpeg_1.avformat_alloc_context; +import static com.nextbreakpoint.ffmpeg4java.Libffmpeg_1.avformat_close_input; +import static com.nextbreakpoint.ffmpeg4java.Libffmpeg_1.avformat_find_stream_info; +import static com.nextbreakpoint.ffmpeg4java.Libffmpeg_1.avformat_free_context; +import static com.nextbreakpoint.ffmpeg4java.Libffmpeg_1.avformat_new_stream; +import static com.nextbreakpoint.ffmpeg4java.Libffmpeg_1.avformat_open_input; +import static com.nextbreakpoint.ffmpeg4java.Libffmpeg_1.avformat_write_header; +import static com.nextbreakpoint.ffmpeg4java.Libffmpeg_1.avio_close; +import static com.nextbreakpoint.ffmpeg4java.Libffmpeg_1.avio_open2; +import static com.nextbreakpoint.ffmpeg4java.Libffmpeg_2.AVIO_FLAG_WRITE; +import static com.nextbreakpoint.ffmpeg4java.Libffmpeg_2.AVMEDIA_TYPE_VIDEO; +import static com.nextbreakpoint.ffmpeg4java.Libffmpeg_2.AV_PIX_FMT_RGB24; +import static com.nextbreakpoint.ffmpeg4java.Libffmpeg_2.AV_PIX_FMT_YUV420P; +import static com.nextbreakpoint.ffmpeg4java.Libffmpeg_2.C_POINTER; +import static com.nextbreakpoint.ffmpeg4java.Libffmpeg_2.SWS_BILINEAR; +import static com.nextbreakpoint.ffmpeg4java.Libffmpeg_2.av_free; +import static com.nextbreakpoint.ffmpeg4java.Libffmpeg_2.av_image_alloc; +import static com.nextbreakpoint.ffmpeg4java.Libffmpeg_2.av_image_fill_arrays; +import static com.nextbreakpoint.ffmpeg4java.Libffmpeg_2.av_image_get_buffer_size; import static java.lang.foreign.MemorySegment.NULL; import static org.assertj.core.api.Assertions.assertThat; @@ -125,13 +125,13 @@ private static int loadVideo(String fileName, BiConsumer consum final var pInputFileName = arena.allocateFrom(fileName); if (avformat_open_input(ppInputFormatCtx, pInputFileName, NULL, NULL) != 0) { - throw new RuntimeException(formatLoadVideoError(fileName, "Can't open file")); + throw new RuntimeException(decodeVideoError(fileName, "Can't open file")); } final var pInputFormatCtx = ppInputFormatCtx.get(C_POINTER, 0); if (avformat_find_stream_info(pInputFormatCtx, NULL) != 0) { - throw new RuntimeException(formatLoadVideoError(fileName, "Can't find stream info")); + throw new RuntimeException(decodeVideoError(fileName, "Can't find stream info")); } av_dump_format(pInputFormatCtx, 0, pInputFileName, 0); @@ -159,25 +159,25 @@ private static int loadVideo(String fileName, BiConsumer consum } if (videoStreamIndex == -1) { - throw new RuntimeException(formatLoadVideoError(fileName, "Can't find video stream")); + throw new RuntimeException(decodeVideoError(fileName, "Can't find video stream")); } if (pInputCodec.equals(NULL)) { - throw new RuntimeException(formatLoadVideoError(fileName, "Can't find decoder")); + throw new RuntimeException(decodeVideoError(fileName, "Can't find decoder")); } pInputCodecCtx = avcodec_alloc_context3(pInputCodec); if (avcodec_parameters_to_context(pInputCodecCtx, pInputCodecParameters) != 0) { - throw new RuntimeException(formatLoadVideoError(fileName, "Can't copy codec parameters")); + throw new RuntimeException(decodeVideoError(fileName, "Can't copy codec parameters")); } if (pInputCodecCtx.equals(NULL)) { - throw new RuntimeException(formatLoadVideoError(fileName, "Can't allocate codec context")); + throw new RuntimeException(decodeVideoError(fileName, "Can't allocate codec context")); } if (avcodec_open2(pInputCodecCtx, pInputCodec, NULL) < 0) { - throw new RuntimeException(formatLoadVideoError(fileName, "Can't open decoder")); + throw new RuntimeException(decodeVideoError(fileName, "Can't open decoder")); } final int frameWidth = AVCodecContext.width(pInputCodecCtx); @@ -187,18 +187,18 @@ private static int loadVideo(String fileName, BiConsumer consum pInputSwsContext = sws_getCachedContext(NULL, frameWidth, frameHeight, pixelFormat, frameWidth, frameHeight, AV_PIX_FMT_RGB24(), SWS_BILINEAR(), NULL, NULL, NULL); if (pInputSwsContext.equals(NULL)) { - throw new RuntimeException(formatLoadVideoError(fileName, "Can't allocate scale context")); + throw new RuntimeException(decodeVideoError(fileName, "Can't allocate scale context")); } pInputRGBFrame = av_frame_alloc(); pInputTMPFrame = av_frame_alloc(); if (pInputRGBFrame.equals(NULL)) { - throw new RuntimeException(formatLoadVideoError(fileName, "Can't allocate RGB frame")); + throw new RuntimeException(decodeVideoError(fileName, "Can't allocate RGB frame")); } if (pInputTMPFrame.equals(NULL)) { - throw new RuntimeException(formatLoadVideoError(fileName, "Can't allocate TMP frame")); + throw new RuntimeException(decodeVideoError(fileName, "Can't allocate TMP frame")); } final int rgbByteSize = av_image_get_buffer_size(AV_PIX_FMT_RGB24(), frameWidth, frameHeight, 1); @@ -206,7 +206,7 @@ private static int loadVideo(String fileName, BiConsumer consum pInputRGBBuffer = arena.allocate(ValueLayout.OfByte.JAVA_BYTE, rgbByteSize); if (pInputRGBBuffer.equals(NULL)) { - throw new RuntimeException(formatLoadVideoError(fileName, "Can't allocate RGB buffer")); + throw new RuntimeException(decodeVideoError(fileName, "Can't allocate RGB buffer")); } av_image_fill_arrays(AVFrame.data(pInputRGBFrame), AVFrame.linesize(pInputRGBFrame), pInputRGBBuffer, AV_PIX_FMT_RGB24(), frameWidth, frameHeight, 1); @@ -214,11 +214,11 @@ private static int loadVideo(String fileName, BiConsumer consum pInputPacket = av_packet_alloc(); if (pInputPacket.equals(NULL)) { - throw new RuntimeException(formatLoadVideoError(fileName, "Can't allocate packet")); + throw new RuntimeException(decodeVideoError(fileName, "Can't allocate packet")); } if (rgbByteSize != 3 * frameWidth * frameHeight) { - throw new RuntimeException(formatLoadVideoError(fileName, "Unexpected buffer size")); + throw new RuntimeException(decodeVideoError(fileName, "Unexpected buffer size")); } final byte[] buffer = new byte[rgbByteSize]; @@ -294,7 +294,7 @@ private static int saveVideo(String fileName, int fps, int frames, int frameWidt pOutputFormatCtx = avformat_alloc_context(); if (pOutputFormatCtx.equals(NULL)) { - throw new RuntimeException(formatSaveVideoError(fileName, "Can't allocate format context")); + throw new RuntimeException(encodeVideoError(fileName, "Can't allocate format context")); } final var pOutputFileName = arena.allocateFrom(fileName); @@ -302,13 +302,13 @@ private static int saveVideo(String fileName, int fps, int frames, int frameWidt final var pOutputFormat = av_guess_format(NULL, pOutputFileName, NULL); if (pOutputFormat.equals(NULL)) { - throw new RuntimeException(formatSaveVideoError(fileName, "Can't allocate output format")); + throw new RuntimeException(encodeVideoError(fileName, "Can't allocate output format")); } final int outputVideoCodec = AVOutputFormat.video_codec(pOutputFormat); if (outputVideoCodec == AV_CODEC_ID_NONE()) { - throw new RuntimeException(formatSaveVideoError(fileName, "Video codec not found")); + throw new RuntimeException(encodeVideoError(fileName, "Video codec not found")); } AVFormatContext.oformat(pOutputFormatCtx, pOutputFormat); @@ -316,13 +316,13 @@ private static int saveVideo(String fileName, int fps, int frames, int frameWidt final var pOutputCodec = avcodec_find_encoder(outputVideoCodec); if (pOutputCodec.equals(NULL)) { - throw new RuntimeException(formatSaveVideoError(fileName, "Can't find encoder")); + throw new RuntimeException(encodeVideoError(fileName, "Can't find encoder")); } pOutputCodecCtx = avcodec_alloc_context3(pOutputCodec); if (pOutputCodecCtx.equals(NULL)) { - throw new RuntimeException(formatSaveVideoError(fileName, "Can't allocate codec context")); + throw new RuntimeException(encodeVideoError(fileName, "Can't allocate codec context")); } final var pTimeBase = arena.allocate(AVRational.layout()); @@ -342,21 +342,21 @@ private static int saveVideo(String fileName, int fps, int frames, int frameWidt final var pOutputStream = avformat_new_stream(pOutputFormatCtx, pOutputCodec); if (pOutputStream.equals(NULL)) { - throw new RuntimeException(formatSaveVideoError(fileName, "Can't create stream")); + throw new RuntimeException(encodeVideoError(fileName, "Can't create stream")); } if (AVFormatContext.nb_streams(pOutputFormatCtx) != 1) { - throw new RuntimeException(formatSaveVideoError(fileName, "Unexpected number of streams")); + throw new RuntimeException(encodeVideoError(fileName, "Unexpected number of streams")); } final var pOutputCodecParameters = avcodec_parameters_alloc(); if (pOutputCodecParameters.equals(NULL)) { - throw new RuntimeException(formatSaveVideoError(fileName, "Can't allocate codec parameters")); + throw new RuntimeException(encodeVideoError(fileName, "Can't allocate codec parameters")); } if (avcodec_parameters_from_context(pOutputCodecParameters, pOutputCodecCtx) != 0) { - throw new RuntimeException(formatLoadVideoError(fileName, "Can't copy codec parameters")); + throw new RuntimeException(decodeVideoError(fileName, "Can't copy codec parameters")); } AVCodecParameters.codec_id(pOutputCodecParameters, outputVideoCodec); @@ -370,19 +370,19 @@ private static int saveVideo(String fileName, int fps, int frames, int frameWidt AVCPBProperties.buffer_size(pOutputProperties, frameWidth * frameHeight * 3L * 2L); if (avcodec_open2(pOutputCodecCtx, pOutputCodec, NULL) != 0) { - throw new RuntimeException(formatSaveVideoError(fileName, "Can't open encoder")); + throw new RuntimeException(encodeVideoError(fileName, "Can't open encoder")); } final var ppOutputAVIOCtx = arena.allocate(C_POINTER); if (avio_open2(ppOutputAVIOCtx, pOutputFileName, AVIO_FLAG_WRITE(), NULL, NULL) < 0) { - throw new RuntimeException(formatSaveVideoError(fileName, "Can't open file")); + throw new RuntimeException(encodeVideoError(fileName, "Can't open file")); } pOutputAVIOCtx = ppOutputAVIOCtx.get(C_POINTER, 0); if (pOutputAVIOCtx.equals(NULL)) { - throw new RuntimeException(formatLoadVideoError(fileName, "Can't allocate IO context")); + throw new RuntimeException(decodeVideoError(fileName, "Can't allocate IO context")); } AVFormatContext.pb(pOutputFormatCtx, pOutputAVIOCtx); @@ -390,18 +390,18 @@ private static int saveVideo(String fileName, int fps, int frames, int frameWidt pOutputSwsContext = sws_getCachedContext(NULL, frameWidth, frameHeight, AV_PIX_FMT_RGB24(), frameWidth, frameHeight, AV_PIX_FMT_YUV420P(), SWS_BILINEAR(), NULL, NULL, NULL); if (pOutputSwsContext.equals(NULL)) { - throw new RuntimeException(formatLoadVideoError(fileName, "Can't allocate scale context")); + throw new RuntimeException(decodeVideoError(fileName, "Can't allocate scale context")); } pOutputRGBFrame = av_frame_alloc(); pOutputYUVFrame = av_frame_alloc(); if (pOutputRGBFrame.equals(NULL)) { - throw new RuntimeException(formatLoadVideoError(fileName, "Can't allocate RGB frame")); + throw new RuntimeException(decodeVideoError(fileName, "Can't allocate RGB frame")); } if (pOutputYUVFrame.equals(NULL)) { - throw new RuntimeException(formatLoadVideoError(fileName, "Can't allocate YUV frame")); + throw new RuntimeException(decodeVideoError(fileName, "Can't allocate YUV frame")); } AVFrame.width(pOutputRGBFrame, frameWidth); @@ -421,11 +421,11 @@ private static int saveVideo(String fileName, int fps, int frames, int frameWidt pOutputYUVBuffer = arena.allocate(yuvByteSize); if (pOutputRGBBuffer.equals(NULL)) { - throw new RuntimeException(formatLoadVideoError(fileName, "Can't allocate RGB buffer")); + throw new RuntimeException(decodeVideoError(fileName, "Can't allocate RGB buffer")); } if (pOutputYUVBuffer.equals(NULL)) { - throw new RuntimeException(formatLoadVideoError(fileName, "Can't allocate YUV buffer")); + throw new RuntimeException(decodeVideoError(fileName, "Can't allocate YUV buffer")); } av_image_fill_arrays(AVFrame.data(pOutputRGBFrame), AVFrame.linesize(pOutputRGBFrame), pOutputRGBBuffer, AV_PIX_FMT_RGB24(), frameWidth, frameHeight, 1); @@ -434,13 +434,13 @@ private static int saveVideo(String fileName, int fps, int frames, int frameWidt final var pOutputPacket = av_packet_alloc(); if (pOutputPacket.equals(NULL)) { - throw new RuntimeException(formatLoadVideoError(fileName, "Can't allocate packet")); + throw new RuntimeException(decodeVideoError(fileName, "Can't allocate packet")); } AVPacket.stream_index(pOutputPacket, AVStream.index(pOutputStream)); if (rgbByteSize != 3 * frameWidth * frameHeight) { - throw new RuntimeException(formatLoadVideoError(fileName, "Unexpected buffer size")); + throw new RuntimeException(decodeVideoError(fileName, "Unexpected buffer size")); } final byte[] buffer = new byte[rgbByteSize]; @@ -504,14 +504,6 @@ private static int saveVideo(String fileName, int fps, int frames, int frameWidt return frameCount; } - private static String formatLoadVideoError(String fileName, String message) { - return STR."Load video failed (file = \{fileName}). \{message}"; - } - - private static String formatSaveVideoError(String fileName, String message) { - return STR."Save video failed (file = \{fileName}). \{message}"; - } - private static void fillPixels(byte[] data, int width, int height, float color) { byte p = (byte) (255 * color); for (int x = 0; x < width; x += 1) { @@ -576,19 +568,27 @@ private static byte[] convertFormat(int[] data) { } private static void printFrame(int frameCount, byte[] bytes) { - System.out.println(STR."Frame \{frameCount}"); + System.out.printf("Frame %d%n", frameCount); } private static void printFrame(int frameCount, byte[] bytes, int frames) { - System.out.println(STR."Frame \{frameCount} [ \{frameCount * 100 / frames}% ]"); + System.out.printf("Frame %d [ %d%% ]%n", frameCount, frameCount * 100 / frames); + } + + private static String decodeVideoError(String fileName, String message) { + return "Load video failed (file = %s). %s".formatted(fileName, message); + } + + private static String encodeVideoError(String fileName, String message) { + return "Save video failed (file = %s). %s".formatted(fileName, message); } private static String getFileName(String file) { - return STR."\{System.getProperty("basedir", ".")}/\{file}"; + return "%s/%s".formatted(System.getProperty("basedir", "."), file); } private static void saveFrame(Integer frameCount, BufferedImage image, byte[] bytes) { copyPixelsIntoImage(bytes, image); - writeImage(image, frameCount, getFileName(STR."test-frame-\{frameCount}.png")); + writeImage(image, frameCount, getFileName("test-frame-%d.png".formatted(frameCount))); } } \ No newline at end of file diff --git a/ffmpeg4java-windows-examples/pom.xml b/ffmpeg4java-windows-examples/pom.xml deleted file mode 100644 index 63c0b7e..0000000 --- a/ffmpeg4java-windows-examples/pom.xml +++ /dev/null @@ -1,76 +0,0 @@ - - 4.0.0 - - com.nextbreakpoint - com.nextbreakpoint.ffmpeg4java - 7.0.1-1.1 - - com.nextbreakpoint.ffmpeg4java.windows.examples - jar - FFmpeg4Java Windows Examples - FFmpeg4Java provides a Java wrapper of FFmpeg library - - - com.nextbreakpoint - com.nextbreakpoint.ffmpeg4java.windows - ${project.version} - - - - - - org.apache.maven.plugins - maven-dependency-plugin - - - copy-lib - test-compile - - unpack - - - - - com.nextbreakpoint - com.nextbreakpoint.ffmpeg4java.windows - x86_64 - jar - true - ${project.build.directory}/lib - - - **/*.dll - - - - - - org.codehaus.mojo - exec-maven-plugin - - - run - test - - exec - - - java - - --enable-preview - --enable-native-access=ALL-UNNAMED - -classpath - - -Djava.library.path=${project.build.directory}/lib - com.nextbreakpoint.ffmpeg4java.windows.ConvertVideoMain - sample.mpg - output.mp4 - - - - - - - - diff --git a/ffmpeg4java-windows-examples/sample.mpg b/ffmpeg4java-windows-examples/sample.mpg deleted file mode 100644 index 6e166a8f55d138b9c358837c499dd5fcbc2c6602..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 776192 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 E0Ii|1HUIzs diff --git a/ffmpeg4java-windows-test/fixture-frame-20.png b/ffmpeg4java-windows-test/fixture-frame-20.png deleted file mode 100644 index ed6c116437a8a581a437a9dab2c9fdefd1145b75..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 56100 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

_x-CakqZ*z+l))OSIdihzL761)060Qc3mlBB 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 &n`7_?TQHu z;xT_4N8Z9nqEFOO%a||MK!Tf(VqtdF|IF>tDu4VL6rCj?+zqLd)F#)Zm0PdxPW(1S zwp7EVlgmnTC0z;QZSSf`Fuu$#M0oDyJvHUlSjz%tY6>no{NoVCOcLD9|A<~`LNSzy z5b`OW79!fN%+odWYA8-u@oXR1qW`tHXX>t4Dfoe&#_opFPA^xkT)x5Fl)=)g%j&9& zd>J(GC6|B|&~mK~2GZpI(HQ&m%vG*7WILw0_dTod@rlHsixyitL!=Qg6N~$(I?(%& zVRD^hU-si4=`6PK2uaXQ#|1{}XA;VGeSO7l8$tTIKEwiKnn1GVpk0Ecb4fz(F6zJQ zefIV4v&LD;*zL=SGke1~i4SrM)0Ddeivx z54V$r?VV6&3G=TYOy6gDz8^HE0g+rYjR6l{H>?*wr|Ar)Z~Y@j>+VN)1~rfnK&O2I zx(Jm9^fv7@KaeX0jF7W6iAKPCr05B}$}0TW3MjaLh1mD#Sw3Zx{Tic=dE}0gO*2D| zr~cq4!~)_c1b>=2`W&tv7|_@GjAMfAMmI9q2l96(!pu%-UVJzSauARSJl*?>OoRWA z9^AP$z#^_p%qZNoYR9h5zs#=orVW;q3L1~3kJGpC$`dSD=5=2;1y=c5 zw)9y)rcq@kIiVzwSTWx+VrI?}_O6UC5_pRH2wHt9ve6cU85GF)0;}P5o~*@wP)8CK zo>yLo8m{2xlP^poDtnYX{Fb~eTc6x$+)-fblvK1MXD=26t~}3U>R@N5_A%L zT-g_`gOM?x(-#gO-yTex4kw`mAgv<*I&}UWvRlvge5ga+zmf?OmIfHb6e|rzsor!q z|Ae^FQa%JJsVSx13Ot!YE9mDzva;@miP(>F38smant|Uj6?1U)l*cz~A?_6zO{%E1 z(i+X1Yg)$H^kftW8rE2w(?XG&H(N-jw)0 zAO~CD`|N&hc5V6D1}V6av|)E+&kn3f!PpD^pb%-1B?&@2etFtDqYk{{eXO?=j`Jw! z7Q{tXvXC?5f-kHR09>N#x2KnGyqrJ^aGM=W<9rgXBkpC&k9FPw3{QAhbEmRfEau=- zosLVu%KZ{enwn#*`<402Z}ww6Z-w!Dt(?_bNEK=V)peuTAm7z$J8py$j=jx!QBcd7 z1lpDH@DZ#Tm>wz;f5I`9^ojDVN)gTEr|-6Sl{A!w(7` zDLFZCu59rh-g;XCYPLqt`q$gfe5&Wpx;~$av?MdRT!C#k2)YNzk9_ri}v*TeN?Y~@gm6DM`{<{__ zKqTi#FqxB#@7~hp!XN3%7+#N1ja}OOZkhL0c=31jmuwFM&Rj(MEoEoE=}wgt1V}+| zzNEI$N@I999rmn8A&}^`b3~6sOGSu8*lm|9{K2O?-IR(a>$ODeGyS}8zi>$p{QB@E z|0abb4j`d;tv(1-o6FRk*-2uxV&$tP9+kBD$F74fAL+-6T#r*{f74=vLJfKr%*Q^q zu+1!3YKr4;>Pn9eyXE*PlC4i5@-p|ki7@}707xgJ>IeA~{YJm6IVl}@ zg;NrT$ca8vda)T5VK`XJqE$<>;B--96noToWv|y4_8&$uG<4!*>a~G`z+2QrK4TE_2CsZDS0jkN-3_SS{_3AF`S-$(4DTv!vp?}Xp)^ObtW`L>^{WSD`c zMk^P4Mw+~Lv5Jfo^BpfTEE#fau^#}$aU+z`!RKe}laT9#Zb|aWAGot_c$Lx|#C}3? zWV|M!Yx-SBWhGSt<8?2%^usi@TJsy7wH67~8$MbcW^#0?+PMWkXaIMNC^XWCD3Uty zMZI8winCoxg~K`Zq9I2(3KstGPyg#eYu}>FB?XhuEhP@h+>g`T;EIzmdb?cfAuB>t z4Jw!RkB>E>|7p8OFf^~tQBxMspfkC&&vCaSO1*v}tzLc#lB(XQpftbG-L&(jZSAUI zCq+DsLOgK%V=n-@t5OKFlvB*R=y6Z3t4A?xFtr`8mPOrZ=f>tc7(|$9h~yXEgCNM+ z>F*4^&7ZMdx0~vCOTtDW_N1XB%@aCqDGTj+zht4|jhOYEZ3{mCmR>IJ=e=@$o?TUQ zG^b$+2rHuqF@G|bHw*ZwKW^KjxR^-KQKy!%hy?Ul9#gpx% zYvG@gob}E=;mie&AW9R=;}gfw$9TfiS~=9z3iQ?k*hx&bQmoO;0k;R!?sxR~*~Uaz z2kiArCT+Q=lpPo8@#vS?78ecD6O#_3g9_+e=%fsk2rLpMhnvL1;gaOQOic!J> zufVD$1r=YLH)WTMb@*jFYmP zJ;rVnFK5C~t~SVoe-#bDlT9`UPrpIFBg{~H8yQ8kO>on_PZ^A$l#lJ=J>y1`d*riw zzc%gKqR+VbgEdtIU;c*!0?-99d-#?w)PQFin*hw>;zwp?9kx|FzA6 zf#&ECT$du+HBfW!Oq2dktK0}q?<;~t5R7j<0Ki-wicd}J9M)qxA`=9p)47p`rBV*0 zjYN^2CHWV|U#+FSyZw5GF>Nc5-TP0vp+Er505c?T2oS`;@gj?sq9q`8WhnwaN?!Y#y$uK`;vK2lTn zkj)xJ?BB%Z2HQPJv?79_c(YpZzi-Jd^cCKcWv=YwN1g3O9+DrBWVw2#1E%X z3g`Ne#Z%T#ISZsvbo__>V4$42jN{tEFy)(bn%I0GB_(XX-C_RXPG>{bDDOPLcjG(u z7y13ITalN_`yj+-b$lW;MhbghMM->DR0#rOm2v}jdsWmDXnXwxVOR4YhMQk2I3pQZ zQEz0R4e9SVj=hWAh>tFr%mGxGZx7@uy4{P#_GmnR0HPpzJT4HX3JB}yraV4XS`HJM zxEOzTO{15X~h{3MzKSQm|z16{rY+R2cFnz2K` z?5{-^rH2U9p^!W*3XW`>5L>GZe;Gt-^~w)xp4)79LV4+3i`jnBHbb*8~ovz1CU-SibB9m)r)}Le`YdQjbqeqjXC%tLBC!0(ta9zH3qK0U!ue|+3@D#4r zbsE#Qkv2TzKoh6h`t0^T!J2{Dd(z3U=y>VHN1U)6G(P(`iSK)74JQApn!9`jKnpu{ zvSOSESl|x36%}&g<~q8$0(RZn&M?)!M*Z92+PkeM)_-VCc$k8=4_rhpa_^N#d+XkS zEQz~a7jWkAMu?UWjVZe^wHBp);lq_O$H#*L?jg@2H$W4bwHv0Aw5ZyAdo*OLwPOhu z@o53y?(7zUeH7u=15# z3HCH33a?W`jPT>fc0)kSCUJIP3Ug*IqQ1&zupVvbteE4e@2Ug z3+0lz1$L=F5{}K*7mq_&@+j_Oocku+5T1pwS%sIH1=`XEp(GJkkTjxd}-)T<;IJ3?6%;H{aM$*V({eNZ}F_y7Iqw!0(n1v8G|J{uhYuH*Z_H?&53MCXXlZeGiCaC{y36r&KBIq$1#pFx5Psg*s+c;h0d?DuFl-KN-C}R^GyER%j?Lk{Wa`F-T&HlB-BE zF*4r8OjswNQja&my_%&m6ci|}GvIMJz+;JmOd%8mJOh5X@5b=U*`}z}u|yN)F|9AU zdCz<71YbbX6WGvDl?i=cR5v-a2$6 za6M#5di-YoO`JAaj}_GA6Z*%+IHxTn;C{SM2rayMiKfMyyXI1FfBPPJ4+BN4rgIoK zuh&)wrJ@`rPkM2ytA50w2n#M1ltBpe9$D5x24O(y@+@d2waZ|m&m-Cce^jg7r$C=d z$h)N^d2H_a=~DMej@Cz-g8&lMt+^i2~#VZ`G5o1838!FHo_WGU-Sa9u6QNp!qg9Y%`v8(k%`@jUX>PkUK ztkUifGE%lSys*@lKf26%kU{*BY)=!K@?&k4xPx^3d||4U)7w-XS~ zOiW>KtnJzW1@}bs&wI5ydb$FVf!i&mkn-ko+gube+ z_Dh{~z=isK7aGCVLCy|*Ce(Jit9O+D!Q^@0Ew>NPhP&VH-&QkfDR$8FF24(@eC_dB zgNy5+Nv}5_Y&P*8D|OlS1PhQW9oO5qn+vr|lWXrVmN9hN`^^WxN&3wSVYl&^anuax zNB$3_&lWT4=nY{cBS@YrE>*_0RxP)WPHLk18^Q}%G@swcc2mVYndt)Lkf;!1R38m) zJDJ%EdXrM$D%pdto@p(Wla(|eHQBFJBklvaLGR>_rZsLAmp<*`NpdaJpk=fV9Li8{ zbbNex)Om+YH@)*`)RjcW=ehCE7ovcIh(|z;tqnb)+0dz4kjG7xwu%(YMNh81%&1QM zon>j=oj6ts=%70L)DC10cTW7q)fw~Z*CzZgX?z3$b4}wNDjb3z4=?8ys3o|5&-ZA? zQ@%9;nGQhVD06Z!`*wZD{wPaPc&7XJ#p=YV{Dq-Drf;bV2d!Q4w&tHNCU2l*e*Hqj zRVwQxKX3il2R-mGV*Ss3Kvqar1_$WMMBt;5uALZm?Qjsf@v``;-Tl? zwqv{@(~R(n+i@;~O@LX*Cgf1R0pu^S0@5A8Nj+Y^;mCscmV07$?dF4Hxw5FF{p};g z(5}+>i^rO1zEv-!!B)Rdq{I<-qL^>NKsRH?J;bJFebYn%oU`~zoHuUWO%npwVBX(q z8hUko2I+>XQ}K)v5s2N&s<}VE$0N=g=DNi!-K$Yh&x(iSN76|&^c(cwFJ0;fIg(wr zS-OVj&)v>2tw)Z({;Y)IanBO)gteye-hLr3i=3}}A)`fn&Mi>0VX|;L70If@JKjik zOfRH6hplW@cK-!DW2C3*`bMb*uXROkqHf7Oo`+lCAT&BrLIVE%^s?Yy$|zO=0DXxy zx{M|)muY+>>4bl^azR4Yhz1cS5aExVp8NCUWp;=Z<8K_YkCfJ7Tgt3WSFzkT_45eW z+K^_CsuhIZQONa_ z?5<3lBIVU~nGdjHxar->TH}0i$0+O}Bj({CHyM1twISAv;z@BbX$?IAN4j;MKp883EAw8yJrGLLE5xX@w7A_IUE$btUnS+0dG z&DvgZoh~2m<#4-;Z&R1m|IYuR)ZDX0g8V2&S3x?$NXtqJ*69)|5#7%2V`sW=E2L@ji~#5@70kt zjxzI#YW+FY?An_4O9YQx_{q-Youl`pJO3nD1x_t8M7y~`;P=fsd`aK=x{BIbIP?XM zN7ePL=#BV!?;8$(_$`?H06p@TE^AhGgpP9YJ|Wm_zs)r<8nyILLq%~;*t>D>{g@?^ z$ERY6;w*n!J#_S=`lyU%h1c?fyYKRg6ck;|)qRbovNlTdKVJUS^HD8#HGfJz@Lzcu z&`#b#Ol+~IsVD*Jh$_^8G{y5O{_1I3$;TFQ@D;qwFl^Be|0Eg;nu)v~u;l$(1evA! z5a{NyPvv1r#Sv31%?B--3gfPP@X3OODTuoOV>9nV!Y%&zEBbhaS_8{2{1T#pX_}Jw zALlZYjO%y$io}IK%-p_3-*);_i1IPFBCooFaVj|xBix%>nJA?2$-+;uvoziFAGB>! zwg)XuOpeI^L88#9m)r%uC4H|mh#=oEmTmN{u-&;Qxwf}13v}$KDXU`RN*0)`P^q`q zFJ@GZSBEWlseLJk#j&Woe1tU_OkMwha6g%fo$1sTr+iHi+8{v$Pgt( zmgn%&8f6)D^wY+@+S8GQ24Rb^m;TixRwVD13;KQ$D-aZCCa&tc!3r)7(SOYH&}ryR zhicwFdE0`) zU`XNM2r8uFHS}aoE&zpw{+mxWuEaS6o-r z6`nuM{^L|Yn&=heQ;vpi@>p(Umd>b*Sqhu%KOiQ_z$6+pUh-(9E*vRn`I&C%zd{v+ znXpfC&~I=87LBkM2=YMSh0*%Pj(f}G1`@unm;cjv z#dkYBEGk!EYwsGE@vKlL3EOW?0?0H~FtEaMI!6-qVGFy34wkw&hEAM&z=)FY=2lm9 zG;10F$(@q3pIGy=)Er#Vt|d-LoG0(VqrKHcNkurmJp*aujNH5w!}$Ad(!GDVE`+tU zksCLd6yzCVi)V!tF+Y~Up3|5JWcWFT9@&&xcWsL=zT(e@jM+ZC zT-M{x5)^S*r#3*-qF;b`yph|X*9i!=_C#50LIo9hZ6&Aaan0_M#S=bTu=5kNBI*Ai zapHt{2$!Q2Pv`Z#@(srkhT~}JoB|s>ajDs}%u{f@cnf{lrQHlv+9EJ!$*kbY@%v6s_9>BI@ zTU3ls=1==keZ>=F(&qc?O)McD8MBpNo3Fe2pKkN}f85(cDFzRBp8O9WWhu0SajB=j z!+?b$q|jW;tMqXbJ=g9L!sWG~$Uc-&oq`+%jozJRK8#`s@-5T=7JNOzEZ>M@h1Rz- z(hkmw-I24{u9{+&z3V2F^(99N7G^^CkZ@uuyXlPJQ9;rN($letr*3WY13^??i@59` ze<%?FjHgVsA$A0I=fvKm)K^6Lk%4=U#B+C=jc_6E5Z10@edd$R14Et|b?-IGQHMhWWX+GnSEc%Ke zLLL8dV`1LL6cJBphiIjhd%5weViuRL#WSrsL#)E7ib<1{(Lwks?2{vv+Ohp$yVf|9^uPF}RI2sug6Khssy3dYkd&nw`>jUq zior)fUv2W4T9UKjT--iuA36b2BKtmI_RW{0yIAlDO)4|AG(jF~dH5)~#J0`UC(K|= z;-2XX-cruEz+j{mFs^MQsiT|3f86Cx+&JG2YP z^L}}I2PL}oKo$4z9^g^o;1Ob=dpliOdID>8UJ~PT97bM0_R*~;{F+{)q0RC6W$o4W zkVX+WW3OrAw=b%CzBAQp=5&6H>v)u|(5=PT&)4_Uc#B9*eccgBT(Nmy-8tu^T7!ci zwzst05zj4yHUKYhZ5N^@>(nCF^^#!K-i!MdrEv~O^m?<$YEANDEErUy5U!A>wNyNJ z=S+It@-wLnU#EAj&5RJ!~omEPn+i_yabw}vK{1QTBn&0NCE_$f-KHF0x1;(AqV+$_}l1f?ML`4PK+m;pd_)P%P6Sz`&nTeXo9NsU$}(qrmBa zG`(R{gHBO}`m+QfROZ{=f0L@NctYkmB;z1u<#CAKidG+S=%TAnnku>405Rwn#ulg~ z?K?Zg*{uxo9;m@Iuv5*0ru!OD=|CQFcaASR$8_G$W}{PMO?OYc*&%e}D{7sT$EXBm zAYtFb^9z`x)S)bca>M0&CQr8N^BhJ!PSE0-sUlA?4{5ul?%7Xu=HE~Bga_bL z9ZC}LhoK@~)1Fmy2Ym!>#1PleQ_`9d1Qz8z|AH67D$f*2ZOYOQ&?Ub1Fw_5T;y{L6 zY|q-)nWi2Y53Stqui!3<*A!m?vdtXGimXsaQQQ9>xnLUc4VuANM#v}q><9!iLampS zV2VpkEIbTin=-0C2n(3;`dQySW~Q@RgA;F`L@S`Son16w?vuk9p67il&9=jF zN&&k$#_#xVlG|`-CdiESjA<4n=`S1DvOFMLdacg#eatHOtf9LoYx`=1Z1Kc|ddZ@G z`TqdQ=8JopifP|~Mj|eW-J;_ra3<}y4jA$J;JqRyphT^1MmpeeZ?PAsSF|}+*@BtW zZp(ZdyBrA%SewZ4BAd#0*Nh0>^cQ$^v+-p!#1e`@0ypwev%YrY>d8Bc-O@vmM4Lk& zo+i*L=dxojibMLVsiK0cJP-Wxle^|W0+_$ES6!pGeP)^J;$|jOzxwKUj^NE*h}ec( zGcZ3Uf25>rm6n9B*XYyqY!hA^p;uqI2NXAL27jiRIf0J_6Av|P!$SwLv8MQYRMJM9 zRVqn72=9sHm+wAj-V17nbYGOjc(P4aJmftY_Ef3#q(2vs`g|Gq@!G$14#LBQ9HX}QB;Sz7oyzpKmWr@pw3HVu3Qx!k~+Kw7?IZBYd&KNy}5 zgzz9tS1QVz6l85RqmrNQ$bzr>zyhYrMiYEi-*j-wxjXEe2(d}^`2IqwXYiK`XCssT zrAILE|}Q2z{Np@iaLYf5G21lG$LkQEINo$VA^$z{tt{8Ce(G$u@;; z1rRi~-%L13`m&0?3eO7teTm9bvh0;$?xIxYo?zSqvFStE@l)>c;|Wxd_p&PuOCTb6 zUSO0_q4{E|Qj4cgogb7Cfk~8CR2xo+-Z z*=qLY&6^%{JD7E?c^U}qjO1HHbW`*Pr=@NBSJQ{-{vZsIax=?yeF!Ruzn?k2?4lP9 zh0J4;n4}B=@8rxz<8*^%A9Cv_M3ib8zLh%|F;JsqBH`&3=c8i-x!x4fOf~xEAXH$b zLw1P{uZO7b;PsH;1p}Gs62cKijRmM>a41HoakPsZ*A9=Qxf>*-se7UyW@!w znAy?$Wr?Uz{6S}v_80|@UryHn5RDza^oS8DTH*O|v%2(^^4F$ydi*`A!e}UDkOu7c zUc{~Wu!GWWB#8eMqjG;$8{L#Ckz1(aT-YNBo5ixL5Bw{vhUTnu^%0sy2RYKR{Q0R@ z{`yV=2U-o%5Aqn|oqTtlkrJ~JzH5pp4o{dLE#eO|1>vj&z`;*V;9u@W%>Ay~)F?bh zRfiU!aNc=zUjmjGYcBQKP@Ka;Q&Ntma&!FjeIw?J;^AC4d$wi~L;*_yy;!%AeEKL5 zM0F=5S5|dRNr3l#F8`|G>wMI}Mvuwo*s5R4cX%J$rKZ4%)T1QfJr$cXGLE^!DWnuE zpou5OlNc9TJ<$9y!Sf`RrLHJk1=szXlEP+(!m5u*xMX{JDd8BuozswuT2!V6E0a^5 z&*^GeC36=+!E{`{HqhyIZ*;QA%`}mC+t2EmvEC`w=}##$nIpu$y_x|S5A|9HZ1k{= z<@ns5Nb?`|JI9@=Sk+(_ClFc@Npw6$0kil*xP^@KUQ#^%D*~dgEAMp{oihhEmp`E`B9l$6wdFOToSbzkNM&qhAs&*V>_7v6`!jP=A*U*GG)iYBsHv5#5?P zN;I^;JkXK4HoGD17bVeq(dy|Q1|Km)p>u^=g}rdqRN+rj$<4+^t1^!4otBs;UG3Xn z6XdSu=>{7UTCjKZ)dx^Y$V}<#J`hhVt1Au=S1Lc9l&4!Ov?$ur>=s}S`!urra$n5; z#XSo4HU58n1CRfus{9em2#SObg@=RKu0RO- zST3qQ=_hlBM&G+aG{$OU?1&QeMP(w>&p;R}HK$k2EYK%L6{QRCh&(}Tv z512&Oq!~|U)BP}%ran|M?o_;K!o!lSzsrIP_Z!Qgx@KM|U zBknC6qWtsqZ%RQyV3ckKlt!e7R%Yms?ov_#=^9ExI))IX9Xg~XB^0HUZjcgi=q@Rr zd%kwUdnmjPt2?#-JWtA1oT3n8^&^@1UCO}*fICgUt2 z#XwGYZrpq_ePJIPseICtmpaCti@8A}DSM1jc1~p?<^@hD!yn23F$wbR)f%~ov7fJ} zy%|ke&~|8ms!`qGH3K)G;~`+gD&($!=EcTf!SiS?)8&ta4~estj%*Vi@NNPfXmhrF z>nnHCct0_zCXCaFMYC0Ifb%#f`4IW6TKvZ&2G3~I>h^!A#VM1i?IoyK=q!HqOb9Q! zB3L|*6}KCR2ajgz@ZsADKZkAEE@!`uQI!ljH((8y5fj_%$Ic4Aa7+aX=Fwb0yE>#) zNp~iNPpa`5#nm!)a*%a@Nr$fHPjvg(Yz{T%78{n&PA3Zyt$;Bzs&4PLKbcw`Uqdp5 zlfPKVO2?FOb==ZqS`%mi*Yvq4foFoS-}(D{Y|~6Er21j}1fga%cvKKPLVC%iUFDExdp6{MyY2k-5*)m$RqNg#bj6YsVdyfVZz1D^Eg08#XGy2B=l z1Qcc76N{3=H|!#PJ}oJ`ac((S+)Su{%;;_QW9pgD%FA_09Guo+Ia2&~4VD z_@w&VsCK9GdzVX1z_bOJq7NEfGe_>}TiKpWiRdT_fg9LKK~){MSlM)(7BC}7LP#%h|L+yj47B<}5F7j~<5_S1GPyg%4gFAqTK4YyD(B&rEziSD! z5(##mY=j70_%r}y7wfGw-VPqK9?X*-(M_6`L`qqgc~uPVMqTqLLp4tERD@GbX>J&- zrUkQ&vO2G+ zzbvlx3)Z5#O!rvr`3HaCg^D{F{tPc<>*N0I@O_g|x*pAu=|LEC5M!W{$SGRvn?B{~ z7`%P`hr!V?=Fjq$+u!f7sF&XI$g)^+^Zad^^hZi%>$=;{Och}wlYBNEkb6wha@Ke2 z+g`w$Lp6sV5DFhcOH=dB8yq=cEgM=sgQh63mI^i<8$t71Frmc6ext;Q9XVuGhXxM5A$$_~ zh}_3tP-^@z^?@n&%crqRw1-|S1JL^E?P9Zb@O)@BLn;`Td~LmzT#J1FssX&+;x%FUX+;+3){Q zzTD~QFiW9{f)H7-XsYgiNO*E-PAVka>^hz5t%De-FBjg#?@jxO`Dx@ zvql$a{Xi607h|1khE4+sh;@KuWitS8*nV@Gs zBJdg2k+e&i;?4$bpJROS1~O08Zu&Iv2^j!rp;E$(G*FqtX~Wx#ojDUn4OKcf7-XSE z$Dc!qBdj57O@+zq3eb*Fvc&LAO44zxk^Gw?Fr<((N}?IsJb;kP*3mxz+HsEqu#vhT zUU74(rZsUNThk&)mfUNiErBsT9J{$$XGE5&%iS}@Qbqm!gOBB0g`3Uzh^pYHf*JIh z-!9KTvZM|^E)xba;KwZ-vbV;q^wD0{)MmecxXV-&z!g^v;Rqd5DwSB^_7wt%tRCvQ%uvDiikmG7$Q^ zmBlxY2lsydb$Q7KrvX(1W-Cmv1*)>HtyuP&T z^UavGb5F&>gI|Pj3vw~|b(UZAi@2ZzqN#wfSec>y_#Fss9NoQ%Hyu}*g|K`17@qR8 zvcJ8C%pYnbl04lS3;Yq=Og*Wtnl^o_pnfT#ni&P}CW9Tq7RsEu8Uc9F{Pc69p;hsd z9lYJCMzVM5k_X@X&UZ8DH{sk@42CvoDH;QrdY7zjjSN&>-uU<9mSKk{9N}Qy>wq#_ z2r!7br&RZ@dD2!hA?Vs*D1~^$_o;ytt+k=q*vKUzf7kjuxMFz~-Hb<^=F%^jik(n| z#&>jvHYsU4E61NJoTn>(M9h0KnQ%VAAM2nzzj(%@_LId}im{v!m>p|ui}9!{8FU?w zw)G?bDfp%2I;l>hEtM8lCfozh62=vNFJ~xu0edHx&OhYI{h%bVycL5pE4xBF2Szf9eyOBv{!uijS1x|iPQUWBy*AHMSL_Bvwp4R zf`EQb$wcFPLqwD1-xu}&g6P7)n#Q{YvbWLff<=-r^tv-^JWyF+i*q?rUjac-auaa# zLj7&FWJ~hbwiEGpIO5)l3T2uzz2xg|d;Ep5eJ{>R2rFV5!m5tKE_NYP3%Q|PeW?uV=+2CPZGO6Bf6FUNcJ7RPgkPW4hE6Q^237eQopm+5Q#r9 zldUI*oAhoGp%LL|WSNh7e-7ZL0sngk!@-TwZ5 zpz(pn7~13Dn`ayD%_qSs6UWmG8bMF)rd4uhPj9eCQG9y&0G1hAwX@*NVwYK1&6p=v zkGNyxkh(4Z6g-z3Hisf_=M*y{OQNR|b|UfRC5xt)sZ9ugF*nx8HhSRN_lAGfA~*xO z2`<0M-DD07AYH%I%2p8TcW5T1XH8<5Evy9cAcKVEQF4Rq23i_dPdcd6DwK;?kX=#D z@{6VusMm|=S!VY-=-jYF!dhtT?-56}OcD<2_@xrsf7FX_7qO3sR^)J((l{PEq2i0P z16@`PBIGLM5b6ceL20OQd5aMy+3PpuKpe9EB#uwwLMd?EGZDq1HQUU%Tvu{Na?#xoHu?X4E|xU+BFx`vKwPa?i^?bV*(Q zBZf3he%8A}is&&Ga$5L{Vz13UfElFD)T&Tb+==PM$S!<*yKC{3;>OxskoBw)2h zd|Q$xpi0<0`-M-bKAx|eX^rGYWqvb&w9?c|;I1ZKnQ{(nzc`K0Z4Q*pDr8Xp5Drd# z)?-ZQ*>APjz1~=Zilpfo*^A}AI*E%CwpvysPoa%7ujIAx(^-$B5$|;Da?eQAKh%q% z^NaW~x8-}}JupSnEMm`;&tD$A>0_fg_A{WP*_Ay0II9Vgjs#?rJIQehi!+FH#X=D8L(H= zKVTaLuXp7x2mPWEfVV~Sv!$hB`(Hk=-@b9?-#Rwe zGinT9&qX)W?L{~-UD3v6(pqJ$8+l`J?Ok~K@oAYIZjW z3qDY^nHrX`pV{9R%Y;f7?8*_3zeBpnTX_1436&c$9UoU5ssBWMU*X2}UYu|jYK675 zNsF#ECn`tS`|f_}ub%f~nUOz=JJRg&k?-{ZIn?FoP2@yO@CYzdSTjaiw%n3z%};ldn#DrjoaQt9G*sgyaDYyz;oQK8OO8q! z+|!Xbi!eF;9y@&a!!3KA>axuTaH25eT!*~^4~f8%c&kj-XTR6Qede1g?ycN}W(yb; ze|(WDS8d%uIG!&5#tG*h6>U1E)9>(_8-zuIb$LN zZZYysFns^9in;7Nuf1Y9^|eud%gZh&#lT>; zq6oLEiuc0Ru@#%*ehfr)e|09UJKlJh)g+k6j6EeL(xYHeq1*&wN0kgO{B|4p*01ytRk*nH`ounh~|atK8PNAfn{V`k3u%iw`Ml4l6ACc!*V1yGKby9wF0EttxKwwIC4Sq*l-q?@INkj{vfxK9|%+f(i9_q2`F$XVAyq0sMkI-;g zr2JGNELA-wvOb#x76(=^%IVJHQvx7vUKlQ8eRI&X0&(|yU(E=;WVjnK;RxuwAs!dl)u>zflQ6MAi<$b#3=kCbP0LGJ-gLe|ALMkMbKI`&S}4A2ld_uDm`w63dRf2eJyW&#Ij zimV}(yaq(OUKZJd>agw(;}QEGWajWUq9mm7Ok3T_&yp$XahaXQGG}IZ{vN0G2WW}p z`O$aekt_gF#*FJn_o9RfO9Jxx{HDyyhny8}HTKbXV(-$t8z|`OJ)Wgm@Y#7Ty)ekm zdF^znNif!>LF_kY;VYa0kJx1Fn*{Hh1kTA`$8Fan2{4+!Z(Ndj9m)+WLaJzSVPK-t zmlAL7#o`v83#XPmXS8A}u?%r-w$wO|3$zt7t+Ss9W#r&JXljjhseiB7^I4GcQ~Y!6 zs~HDhn6$mBt8CNW!BDmz8M`M4n(BR885&b&ny>xl{CMC<${xD+Fc#%R^e{74LjYeL zn!~nN?EZdJJcN|m=+WkcI}Vu~SlwKqWQgU#Qdz8AVAR_el&zz&k1JfrjN%qa=2~TP9XDjb|@JPwo#PPTa#UDiMxb?q9Kh zj-j(#V~h`(zj~ zD{t=-O_d3Pb4Uv4gR4q{8J_lMs|%T8{D-#Ht6}acpOSh-$ zcRU!#>L)~&voW;c8N!XipSq=H@X)KHK=9xjd@fKvH}1@G>Y7U9B#*`Y!u({;owIdc z80UGlBq2Thl3C?v&PSz6-zvfOh<8>V15piDiJo7g^{v%T|AZW}<_^bTX!ohH;>1{> zSv1c5^aZ0zwwpLkRGK0zG9L3`%}O#k?}Yy&LXQ_Ti^F6Ut*N2rL{|^rYZSbTP-g1^ zJ8ZVRT30VgbPFjpmQ1`453$?S(Vl98eCK4(;L88}470OgGh_tW+Ai7q-hlGw@BaX> z3ZJUog0^5jE;ben_!J=FL~=ZND909H_o|$ASPOTBH@pO^J)Lx}3+lvd1$l6n8aC(J zUh>Rr!LjTYhG~4$zVYJR+_lGtT^H|i7zvI5FZe)nm~g7Dhk&w?}SbrM6bllWL`V%FR?6zTuMZj``Y zi4`*BY8X4zlcpsngQW{ep6|I(sGIxni;96*9qd-FK}4SJu!2kZ+)?1wuUtL=l(OQC z_0&|v<;feaR9|rv{l`DKa?P7cx=;=$l52{tH(z=s(A{Rju+5<9C%8_AP}XLG9j?2M zCQj11&&z}RtRV$ojz=+``kjcimX_ZJR5{hjJQDW2)i~w5SnHi|<98LBJdp@iffYk0 z6OJ?qg*U1QA6>3gE3l6);1$}Rq04ak$U?l4X=%lj6Q@}ICx)`%EHDab92EZW*3~{+ z(@czFM*fg>wbAW~oWUv#H3l0-;of@)7FlRoy-D-I#8aU&`($<`^}+gEEBFYPZNx`5 z(0SeJJAbWN{S`9L&hbr|st5`Ae4-hXd|Ny{N{*VaR&lplz!=9T`nT?PMIeo!)<0W! zF-(Cf1Xt8UH>QQ%JodAvT1BJH@>t>Hl|byE>!kfv&C4>Ocf!^4N(xPAikWq;Im1za zHe$h$!v`BOU%m-4aM_eK{soeo`6zo;W`@J^c?Ru*W?d_x_;ligg`$4-&1bwnG0AB! zOJX@Lk8*nV`)s~a--j*|XGyHmcTnzd^OC)JF|gp2jUB%Sg?0 z=)ozCvJh1X>jT18=A@}_Ld@Cv)zF}>aWlJrwII7+RTY(KZj7sORQ)vk=9DOBH+e5pJCxvbg zHM?FeoF#!3$XmO@As_n{f)gp>xjVtUAdakrWh+2oUmQhF(p)_NS|m)CByZhAnutIM z4Cf7cZg-{T=7s8fDtvVH9$+m7`lt}#E>f5Q@#1jT`{nOMk_l=jr=!>h+5tg zwNlnoCFE;Qf5gdBRt#YP1{8{qy7{_Q%agxBKuv5CFfIDl@E3m$yg$ANVYiu+O2g13EN}IeWup^!Bh6}>-6PcM5 zx->Prc;Y}zcI*?%ZN}B&wqC>oQjgt44dq!v*55IO7{aF$&2?6kQ2-2($ft86-YSV3 zB=IO4AjiYG1KgL3yCr$S=1?XDoNn@rbNJTOqq;H6QLGP-o6}XQ%_#m}@I^~vC`d~X zrBzV;K*7OKju2btxYx*7FPWam!)2^`^~V_qIdZ*aMJE@2s?SYAPX7B6ln3kOIya53 z2}GvKzLcY=76KBUjtGV73jL@O!S57g6cUYl*%wPn32kjrqUvd+!bBP+@EX(t?F930 z)v_MtE0c=20rA|3JF--2AMxhpR*cgMSF@u?;NvI>fkYmm9cF)tGox!RQ4}1L8{%V2 zwvys{!@?y4$c&?KNq?fgh(qInMKP!M=aW-K!R5S@Z!CHA zop#>)V+Eq_;?KjI#t+v7t0yUbdx5jlM73wG8krjv?u*ToczPkIUkltV?quYpBrpt& zG|Cb0ofUt!VSErV=0{s#w&MFKy;JnDSp2@8^Q#06MnlTBEx3D<$^|3p<24 zVL#^Z-6`T>TNkeV?KU8Ub-gQh)|^PMEaGRnP1|BCb+9mq69) zXis{nIT&gEsa2X@oJYU*g1B!mzd43w-g!CPrT2*|dZ0KptUww*4U%^<^Uyek7(H$#6~pD)@kMI?yH7eQ=w~x znt;_wH8b0=6M@UAPNR(@h5M8_Tnxb!Aj6-w7S|uU4d`SdWY6u6T?)zmmVBm%dKSSh zFkz<3rh0HnOmN>aL*o4By`iuD&*f{y?*;>XGX7Qz9lJX1_J0z0Hu9fwXT=&-8$(FL zv{LcP48wwo&FO6=D96OYEB>s|QRg;T)w<+ro87NTW5`sLWx4eNwax>gGKn0mh)k}~ zj#tuzmIJ7ttsz7)pYy*_$$V-7s&MwR4*l(=2cJP3eT!&z$9x^0gtvDE%P)Y7OcS9q zOdvVNyxBlMa^cGWzP>j~E?o?*K@i+EbdVH=jwMZhlq6>D-Xny76RdpCL8dFQDftfB z6c#Rp)fji&TmH#(SLbap4zB~Fy$wo^HrP@9z-XW8MmXZCb7 z-Tk{W!FM7O%__fKJv(n3zdSTKh8HHo^;MJIwed=9e(8i^!#+{DBF8s!@t{oa5%btv zIg%03Mh@PZBxM<>K1ATmrBAuKNpu5lJVV{fN$AaU0=@Y$_Wm8(^K&51V#AkWVfp5j zT`uo4|5M%Bn~w3f3P!KJ@8?Bph8LCtB1K4HX7g(G!TG%KcR6Tzm3g-teP&IopvX{ekhvzq<_Tfmi)Mmx3g z2ni|b%r&?QV;SZb0lB?sc;hV_u+gT+NZDhABh-Lc1rdmUa4;897~y61T{iLF-p7r) zE0yj&+*r#`%D*w`SP-f#y~z-Nbzw7SAJvS{yP~GSvJSYZX@|Ml%@fFrXtrrEQS4MV z@DfQlYP5Zj$2l&K)oNSA_RE*O04`hf5E}|QhjdEh6cF1hFnmn|-x{V(dCyLDd$iDa zHfYotC&?|xK!9L!Z>yE%*U~l{l{-bn)tE%J%5{dErE%vbK(7l4DV_V0cXZ+d6{)lG{pE{;Kwa`DrvZ6ONT;=c|ipT#JUf%tqngunc3 zFcysBpX=DiBPV~54HfMx@cN4yWAx7XDE}k+EQGtKKP~ZTEZlOI{v5awR znK?tqDx1ocxThn=q+IHSRFn#mcVs0~)7gdLkNx1>D%i2oO@;AE<|wd+4gU* zpgIQ0JughiKsZK(u_(#7|AOVL=T-BltFRn_`y`3=hd`1fExeBgAcGsM6b!<_TI6X1 zFBiN^$B|1-p)}embvoCpt-pzuMR+w@nb4UvHH;!hcH7fW&}jX6pWYnPh~q}=EO&OkrYw^-nH|BxX+9g99UiJ3|UX|f# zR5Wp*v#Vt)qYM5h&1wivMzC#%Q;^oiw+~+y!jHwXm^=kVA9l_-%L_Y+JzI!?*xRQh|iCEtR&sdIYz4>04q@1OIL4uhPLN!`dHn196 z7{&^_sFiXS~c7?S7M%6AgO}u*q*5Q zMOgZNI(*^VX2`7G7*!Qbo5O%wAQXQz^1V#akXC~`kPR_vI>ngt5`*~-ylc7LcV9m#~**oH&+9{U7LWXVpW{Map|SCb&CYSqvcLPe3oMI$vKv7A!0Gw+eEVMrMIl7=|1_aU;QT)bMScKE{5<~x zp=cDqc?XWE=i`wew9~yevTtY(3oazc3JqlANApS8C^LT(xOY1D{Z(+@m+w2$*s{?d zRogypx8fzKmxX2@di^cV%x~pVoY~XUDZ9&YW^a|uIh?vd$JxT5!EfSD=+=KkeO2#U zby%{dh`Jxune$$Lf49DiicWu}s#|Fo8K!gXXDNQHQrg_ob79(VK>*3y^&1&&lJLGZdy_NA@#j?>P%&}nYXbiURL(HIicpFkodZ1^3y7urB zhk#x|buVD(ni2TN0Y#EW`u`oE2-rO*{r7+(39r4S698euA{lPJ{#3{*=icplcawh> zPy}>lnw<6i4k!Y)NPhzqWr%q?{ks80+W$U4(a2H5zY$ObjCKJ~l=7_UzW@{^0rZ;x z3Q&aZ;XHGn@o_h;5~kUZ%2jnDYs(9E*5mgQdsdxpJ?;xJ0FtK`r;NqHw5cxIQrU*L z+VI5Pe_WKvx#|t5Cap9YZs@ zSKhM3Y{EVxJw8QDPjRepkxml5NqCBIvlw*w=og(V{#Z6Sp{ED4WlWds96myfat?RD zU|K{!QLAV*Xy_ByG;O-KI+3b=aQSTgy&?p%iMLQ!Gc!Ne69~yA`V4E?bJBK=8dxY) z)%=R_?YSag3MT5Ui+kbQVz%ah!ln0i(AhBTr9Ot$A+U-95rwV^hO2#VgY;plKE7ks zv0H`JkV!3AAbt=cFh*h+HhKwAgkC-VIY3dp(rY6XrjpPah*v1&E?yjTD3!Es(C&VM z4#!+c4B=mNwFc}2s(U}4owz#BJADc~!^&`of5w`k-H)l_9$$Jwy)0ZuM z(tTLKZ^s{z3NAn^V3V#L2TIoynL_)Qwg_T(FJep{Z5ust&=t5bAM`xCqp6l8$H_cV zAU(po6CE2pW|9<8HEMrXKWK&03X`OpcWoR^87AO<$-Ul!Oeo&tY!^%VQH5I9_#|?{ zmvWbECZ{bBL)#N8NRITO!djrBvWUwV9?8jYdKhoc-StM%g^sPdc~@NKrj`Bvhy(OJg}&L3l%CV+=AktboYVUe#gL6B;-`LjW;%8~8tZ8EHC^-*n; z;KoS<;b>@W(>Ioj{uaY$BO)16AK8Z3YNO9#mWN+j~5=bfEXq@bbPbL}( z?K6|jz=VhvVs`BNcT5$kXm8v{dsMjm=!Q%I1nS8HLV zK|1PqLNkuQWp_!KBe7HPr%ZlogLeEyzXy55=0H9P0!hBk@>EKScbUOdzIntfg*NTVVp$eO87%cl)u#t<6Kp9C34(2 z+ROjw!Rta0Mh^adDCkW(lPV&|%5vE?7QuwcnU+ue?wpqEvrw`kKBeUe?Z|GmeDtfd{`xjOb02e{Cihx)(;5J(IrqlWfRRldk*rgSs z^B?Bn;&#F;UD+Y`amkkth0a>StWzGNHV@uC&z@ZTd3p9}XO3+P9HNOeo!x)CUDJ^e z+1yxsjd6Y*Ce#IWVbdpdEqsEB_eT#?W{B9s{q{MR8w3z)M*-2|69Ke&-n;?xi|e2a zfgYm#koHCP;G&TecXcO2IspyOQI!c@`9Nik#cDB^h}A7Zn-R;c;dSb(%TuT4&n{w2 zj0OG3!;2o?&khL?OM?4j1*aD3#e&(D-&i%y`)opr$ChrwN1K?+q;4X>8csP9pa&tr zP%2wnfv*%zFKFU(DwmQYi%dx=H(FzeGY&e&kvdPRG>gxig$u{#?nZ7vl;nFBWrNpV zh_;%LZ(J2P*=R(czHmSEUSiEu{A@Ui1N);P*>qYg3c*GS!Dq^I5E1R@Vq{QcI&Yz> z?{;iC5P6~)J2+y3xI?6T?6-UBU1;7vJeXq8yXOzfE;(}w<@Q027iA? z?7#unUPmhFm!{4DcK?u)gVvuZ8G!Oo>Rb&d50V%m0*xlGU2lKeJDStm3qYaiASDrp zyBAY&8f}51!XK!jslP`RQM2r{{*EdF^ibEopo+Zq!eGP@1JmdT>&;|}bZ(C^yBOLx zqko@kR?k;Mk72uqAba*D_iNpM%ZXB9N4` znIw;Gl$JlEw=$u|Y?hh}c8pY7;G%rypCS*v_lI?2mPn2ch9H)haiE{!xv&Muq;Wmo zadEtl8n@xru#Z7AAcrw{Bki5I@FLHf?j+l>EvUDag=fxVmr${NBs7suIrBfi`}-R+ zOEDj0t@A{~wEY#Ob5JBPBY^%_WG>n^rG3k`PZzlEsFQA3C;*ApVF+ z5u|+1lXSdzdVl=>_4Sh~hJ%^2*kepFqKmeIFF!W_3-eJgkiOFJUzv~4Y?uGZd{i^z zd-9K%j{u_G-)n{NaX`6d9GjB`W!ahfX{cbb^jh>zJE|FGeE@F(K1VB}V{|Xe{e))f z2zB=-hwr76c7r#<^0`>W7c{Bi8;x5Zm^C_mD>rcRrtMx;FlcEill?q*YX+0~P11+N z5bc$XKO!sFxwD}Ms_B^E6I*VZs_c4iATox04x7M=^_>)e|wMMF}Ha!t;xN^U0E?xVb|La&Y zFS?5%a!Ejl9R9kh4yZW$CmbqHZeCQ) zn+ju)G6zDl^m78Iz}}nvW-%t&MSjtnb0MYq#w4e}l823wrT209pS?$(I}2qezu);R zyr9R%4xooqMGDX>;S&6X{*yPk)0Qj}xfK$%8a+^>&FA|FEUxbhBsUWvMG}q$*=ob! zC+kwTA@?mUhK$%PsNN3HiD1!*d%0+S&$mYXjs6NM@~Xhgq!HV+i=WSw5Vg`fnFNJ8fb171QC~t6sD$GdJ$wingr7kbK6C!` z`A1UC8VUZEYDPx#*314^gG`uuZg=|XcZ!f@+Xh{dE(Es|n#c67wjTNYzSjMltVcjs zX6rA?i`FBFKbbq#5YB3MAHedjVOtCGJj56wPHsKOU-eiYu+jHtjjbY1MZM~XXF{q> zm7>`s4ZcFkr2RKey#BYGBH%Fh|0kyiP-y-=oFbr@!1izD6iwaqOZpq9s2RX}(s!dd zMZW->^5#FrDFX8F{C-Wj&(KmV+iTx5lIV04L>ZC2wXWTEFZ-!hwvV>j`16k(1M&_LYO;D0=a<>Et)a>tZN&zI` zA<-!g_8&ao*T<7Sa)oo(KT}c!IfFchd*=9f>bCFhL)UNvTqK#Z!_&`nlf@}?E;z_) z03tnR>pH!tLq3hZXH_BK4siqGN~o@BCFU!60?F;sbRvZ6aZj~*9zeeVr7YH>%zk5; z=2S8)9zYgB0BuGu&fD@_YBjE?EcWcbS6iHCFwbtu+@1q;CC{odwdxxgJ5SkW!294Q zwX1J5NTb+koVVh`3X*VW8To zA@t_8QCwEu)}xfW&Yjcx=(lklVEOPFlZ!eyJykkqPXL=~`VzCbVN?J?_~e91e83 zhKKgOouXCp_7~(qKo?C-xn7+_h{Iw8R*vRJ27%fTLyaO@qw>^j2Nk_OPuR`u7vwQ~ zjvH<+QQgz7o`RS4kNbL66gnE_zyOZMqs7sU54tStB0f4I_S?iHxiU4`d5}Q!Clq>C z+n1}81Ni==In{Z-5-lDZmC}T2QbRLsiIq1D?HMtOdkO2j_8r)FdXwOxcMOiJ6f$;) zkCJQ$R1fP^RU`rH;om!ts3rw2Vv2zG_YX|bXl6vQ;=6Rzq=4#OC#K3D!2%HIoxtZ$ zW6O)GP?Yac-BVwDK_`A-0i~&!F+NYLNUMtQ$X0c8x+aH^dwMv(O-OCohX1FTX6RY> z{~^;12)%H>Jv5$8WMdm2ILxS+D2n2Jw&U&JJJ)9JH?(~m^2Hf{-v4%_EQ$9@SDMOL z1xJ7zag~Iqcfp(Qmz@!|n2O}u!2t{wAFZ-T;(h{Z5|LGkjgHWA0wbL#^6QUTN2S-U zX}} z$TlQm9)Ih@$X8-{ur+AY6MFp-^t-^bg({iwP#IpU4(IGE+>7B-n;A^*ew8*OCb(Q@ z#J>Ey8#Dhzq#3Xb{l7+sg`G?Vl`+WIdd&3^X!{Wa1I-R$&V zMVbNIfxktX0rZr-e_x~-Ftq!BMw+45IVnDCU~UuLqrMSxKb>2RXXfK5QAf-b zZjcZJ;g!}x%_Uv)W%u$ViA8b+{JH+|$p(-Z*|-J|xs^jt`QQP(UqF!a7?xc~=JW@Q z9C~{)%76{at#l>jswjDZ6H?DpJ$JodDE+qgKsM}W&SUD0uV&Fgs7)XcUYI>FnRJX% zNn-d2Vdug5P~w0-=0t1!EoP$XE? zWrl&!&Dv2>#GQftXsa8dWR$X1SLR3{wWiPLoAT@P$?y1TQcB-lOE=(wqt?K&C1hX3 zowR<;2GJdl2ija-co?$i1Y8H2+&8EH0Z0)V%=W*A6rpM0ze9?Et@fWoicDhI)T))p zWjjLommB|*XojwOUrsbLjB#*egep{FrxjY2SQwrzg)rRcqQBignpQV{3>=kRkJcjn zgXd@7T|D)pw_L^o{xqPsE96WMIFXBGCxuT6SwW0U`kL$kmYU}Hx>*WKBw^FtX(w|x z&lF_A2xFUZp!#?yOBnhH*0C3Bb5wD-SN{C%k4UhEM9ZkD6{spWuoo6B(cidtw~^as zcs2O3f#!@KIgpDpYAYd`Uwe@P0L;DYv&TzSH3XSe-~hbl^W#-qN^mEkz5A{WFu-vF9;I#*6mjNpgJkZDqf>gTyUMl~_XPL8 z&6~+vA@Qo_bBrl8$TKM#jCE5Mze@a!h+mgyU6=^Mkxi}#>j+IC%Uq#(Tj?h5MD;|; z>}n1ftO#t~?_e>wUu{;q%?j&Ne@6>g{+(g)E!cacz1QlDbo2(gSy>kMnR)Ddkhn`k zObgf@-$`XXu0~4z&DOAAyC1eg>!=3_{tY4{TYahXxW~87$u72L0(&2ZD^j2=@>r&~ zcx6lPq!Bmd?60Oxt@sot=0Vk`eh}j4-KzZ=g)}pc;U*X_xIi@&at`d zr^zBR#U)|ezJ~KCHcYPTiIm5Npk2oJu86HHSUfVKC-Dx`=Y|}iqOpPxjFkP)FjifZ z2|ZLSQlz)^I$m(f>Mr)szE>*ApWzdUv#P{SJQYt0Vrt)&Y0@1cD?{*|UUmdVWAxE? zS3PYhhey$GI~nDzR?v>0bMM%_G$Lg$@fznZ#E}ARdFDGR<8w4d=On9jg^SLN#Z$N#y3i*3(x@dYg5!J!ign z>A`RBe=#Fqp%sv;a_H`OTBTt04&Lrg?$do?|8mp-e7%@B??HFK-v;s%A}H9T(l_OD zgHk&*n3uP5hM1gs5LJgAn(w}A@ON|bj#sfLYcm_T+e>xIa9SltwZD{(UcTLHk3-hz z{4l!*S9h5cNl0Dnvi;mUigxnQss_Oeep=yD?=pL_gbxgQgVK^BEEK5C9!7VOFMej% zM3Y+^Bm{HrLJC)4u!xGsr0ibZsZ1&&kb>SQ1+v=%T_ug}Yz&jl?z3v2qo0r;CvX%k zVA3@Wyird<7o>@N7N)&-yEo}2eZ9xHz})P4 zcZ{OEON=65A2W5CQ8d~Gtp<-9{EEt0k-i-`v zolo7MW&Mf{vb5D%qXpxjyRIBat9b66g|!%_7ZQjAwd-err8y7Ha(XMhj^v0ke%-Pz z?z-^y0cX~*TBI>9$$AP)q?8ne^HO;~i#j4yT()vON(VA;`W;=E{M89?Y_jA=n%tOl zs5Fr9!+j-Ds5|Q*5=eo>CzZ%h&jK$UY#`!O`JdoF$e@?=@r-45<M~kKjd*M znbiSMcfZzBGAz$8G%TSN6NLoYTo(aV)xw?5cox~N{?AKwj7Y`X*RTm3Gowce9|=Fo zFmzd?tXOH3CZa5mk0RjcFPX@>`Qv!`D4{Fi<36F0`JBtq0CF_7Tsq;@0dL@YEQ0Ew z@d@M6`17gr+Fs;25TvJJp;kZkAm6?B2HnLOEVx;*HGsp%^3^u=(NY&&Nkzt{bb5Y-0PGpIi&SuZdcyj z`E;c=Ds$iyS<_*Tni&co+;G|4sTlrVD)zxge^R59=_bDRi9ySRkA&Lw9fEOC=(M32 zqCzHg0|hX@|?>_WW9ziRN9{nh)=J z34e;=yt%hkh=lIt(ITptEV@4y)x$=gw#K66u+}h{S8@hG%Fcb~Edr&3<;FrQEb2O- zWNkudG;MZ^@`mWu?5m+JLj@^QmNScGD9bIMv;EN-KfvIND-+Q=M`(V`Y-Q%HFPsF+ zYTvb74STtsRJp&HWHP-z%rx*p-s%dpOTa9$&)MpdH}U(XdN}XR2)SPD(8jf&kYvmJ zp-0PKe{5p1^WN}ojR0w~*fV>)7$XZ*I$G(O^VIS`m&wx2&WYCwf2TkA$IuJN}r@u8fo#@N>MeSUh*Yje3AcqxJOD> z$gAA|26Ex^g4ZY zwo!pkOTdbMcOi-4nI^JGg=%8ve3Gag%9aj^k}5Y@f6c0KJTToL9ZirSYV0mmaW$Nf z$xD`Mkgq~LanHHqi1cKEX20jMH-Wt16Na{$MiARgu0*+#ZKegb4Tr}&0;sz#*{wV!S`=q}Q5KF>Aq=Vtq?>@FI=Sjp~g@jOUxj(}1p4a^kkK^wSV ztUjG@YF>4S3SIpz&kQhH{4es%&=#NnRh}8(dimGnnE?)$e^s6t@ZMd@Geb9l+5fY7 zX27NWQ+a0pUwe1{4|Tuy0o;-jWhs%Ju_v-z$`UFwj3H`{HA@jGO3GRoq03-wW9!OR zh9S#kEn?v%zVGIeBR6RRhz~7 z7Ua^Euh21XX=G98DgJv$(ypl^5X{Yy3qIF9@{NJ-aE<~zLA1PoiQpZWzQ$ZKT);F| z(Le2E;(Ik9Ig-r!!Nmx9*uQ`_^jZz6Gb>z2*M&$X?kZU3h>>6Gnghh0G*ZO+Sy0)$7T)rS!RFRP zqM-pN5YAwkFxxNTZ?Qeb8>T%O8unvtnZE0DL*cD8Ik;zH%R4Tb6Hcx`X^>5q6dlUy zA(LDURx)Q;1|!o+)SL|#=?4c#ov2=}vl2-}mqt3@iuAm?;Vl^cH<*q+vGp^+fps4AN0QA2cGYhc_#_Mkip)`?4q$2t?=Ikz@y4 zd2_ZKr=jmy_wRKc6$wL`cdUJWlfkDk;_R1a4t|8OzF1f+_~3!BCAD+^eImPcn3zRh zb5b?GZ8f3(aIB|vX{n*{h{v*ze@fH0q;>?7a z)?PdPPn;Q}%IxudZr0i=k58(d`Kz7lKzMNA ztfygC)4IK|)`qSJDo3Br?qk=pk!Ek(dOlGy2XZ0^0mSAl)(08x?xo(9(0+R-VMzb< zYA!3Z{)JWHv2@%WkfCE|IvHeiqCNa$^Vj1@#jb_$FrWr%k|ChpnN@D`#BL9|nq&H9 zG_5RVj2wX+ruFmR|1(fjuIIbK+H5R&kAE$!>hlPKki982N8Aj1y<_*7uCWHtXm40L zxAs%`6c1f%P|RTEfvKmrr86Cx+S#w}JHxJrZ$ng8c0=J=kO%pQdoYrRTlxO!CH21Gb5qH%DxQu}TW5XAH$2j4$?dv5%v&Vc{1@X} zaa@b}2b_3BKo@j-6!LV>+lEKXW^ip$JPdJW*>|%-_VIP}ecpTK3%C*p0+3~EllN$# z0}fiG_MR%U8g{gJy}$rq!y^SyQ5RnIO7W|2(aibYG(v(m7HSitg$)c8mW0_*v7w+0 zu`EC7B(cllc4|t%=bIyqA};h=OXN6P zc}#9F?ddj9a*_bA<0=*X3j@0J{B$nQ=0p!hkc=!|RL+cWOPXt>QBKWU_{k#nq9BLdO^>+M013u!F zqYJDL#OT90l`KiVslksAonZeUp=AVJJm4a$VX^njaIu#&@j82~&KKdkskRP89$!$h z{?VZo3v93INvt-i8P9&T#;nd}P`vT}rq$jB@f!SPd;g8;=;~)7HBSYbIAoU^B`=|P zB)3nmc)L&T9stxcZduQhkAA@3W{1DICx#<*QjuD_gof|=takNcaS6{ycL67k1byY! zw3tcg`@0XFPsX;+Cpe9^5+|-~vo_0z&f_}?gu`u%Y0J;C?+oq0!|;O5Q{4vj5Z^jW z8~5|Uv>c%ufe)x*sGnZ@f88hgi`lS-4_kgmT3{KB0zt?ex8nG%w=vhNQVTrdweDzF zK3g+?y5x4+=p5O!##5PKzlRN6BTd9u>-MX((j~-cYmoZyGiwrvwb(gG3-FVt?}GpU z{`N*3)WA{8gK8kzU%RC0sp?wZ8Erw+b@&2Ti|qf}oi>!BV9A5~i+4WujP^8#5bGy= zG1%(qtWh4}F#; zjD;6;A6v+k`O=+dVj`E|Dd_%At>P*_xZ?*uYe`M+K8r`4(?svnsMisR0_y+A%EK& zuY4xWrCiGtP%ND-D2o(_b`+hjR*z*))bW#zBk1W$Y9B+AB~i#`#unlSljh zFFetkfAU0LXS<7MXiZ+JitdAyI@N?bzrC+PL2|{&AfU#LC$RFDQ;T4NRp048d&f9( zsWE=Q43|H7v)V~JAI1;0L`p+?O{xip!`b=@a+30Zbt%v{UEe^}s`o>rLdLdKVk>Wf zQK8^qE4j~iOZvyDT@!O=axD)b&p{^W3M&PdA`|jO4ItL7ga6&rEBpg)T5!Kn=Rl{r zg*&H!f=GONN_}bA!3tV!m*x)<2e@Pw?Rh9H_inxF02TBhr(wog*^Gm5GzOmcUhCTn z5;;%cyTAbQQ|mo>5^|LQ*zHf2l@vnQ#&|pfPQs7X3C#b+cc<799idf_)x!+62iMry zIj$Vc)w!8ipU|h8UBD5|X3E`iFCpf%4ruP<=J!ZmgO~GxJy!g~73H-#3-+}YDqMx& zwVAR$Hk)v-B8N#ik0#M>)$f#e+o*V1VM|1o%q{INs_#Dc2JusMeu~=w4scitoe8#N z*EEG=H^d|;UtILrN|MeB&Okb71=y=42}Qg-e8;T7JzE8$(iw`d?D}HFor+{fxwi}1 z8$ekkJoUZ6#T2X=_+~d=^4_M2R4BKk@X^rn-#8EfNq?K-(W3_0dOlLQF#v1mnB3>+ zw_}BoQI#RZq!|F@jQZ_8{AosU-%G=!Jcu}=-9r&r${RF~IZ3F4A~#_$eAA|YvgDS0 zRa57FD4mQ54Vvrj8HGl4ZTQ$9c(S^`ijTOAe@qM_i;re%LCbi?cdE@mtuGlf{e#Vj zvjXEaDrz*2g=Hvt-gLB9wVwFs#{akxh43OpH;YL2ayY!YWGMdLHWi+cw%D05Uu{(2 zr#K+kWR&XDSKE%iG#peYp?kBH9ci4ndMF|?&Z7~P-_gp|Q@61b4^aX3(}3X@+zTN^ z%>(Petjl_LgMPRCI>XlVo>iZUN3kb3{wfFQgJbs!)m{;+;vGFREh1fYzFhff{FVKg ztZx{w6&+|{42Po^uN~=`N)hw$9dYlDjS>ypmnq5Nz}Rx+8Gbh&Sx!CCfXyJ7(0?wt zDM5r|Ao=JIBb75V*Xz4|AeE|B!1DhPB;9es4BQg`iwl8oN|3;o+I#aXz6XzS<&hc5 z2~`@x%wjg$o(rf8p=}q$4A@gdx8atr5K>UO(YfN;fkf;;4PS!8)chl|eAi=1xe-)m`I|0l)hFoN-JQm&k%U_00`wmI+xLFi8cJ zLT-n^kb2f%tQdP!)&@N1jJXboNHUU>O}ItfKYvwfO8=$;KY@wDN$6U4KWmk4_drBr zBu@wV^fxN!Zqau=pIAkw1Io(NoF>XgY_3rrcLEL4(l~g*lk>xcX_rynzDN6k71OO} z+vcyL5#&iVpZME4j}(0~asbY@Bv$wp5Os@|#Tdsb+6w%!MYU3ZGW>DDc%i-Zw&5P^ z2sImbW5sk1XmC?VGogkNlYp`Pr=|^~(tc2aret00cWLQyH30;>@qrN_8y$dt*gRjU z5H0kpFUH~%#`)sfW3c85iwqs07XFPWvnGK3|LZ6-Mql<{M49=!9e0J;`BIM_snqD~ zAhPBYGNEp^bnoovU1ZaTQM~Az)ylVmYfy@4pU?-b?TNk>1A9abMwyd8*FxXa6cc0I8%R9J9m+Bj#=hr%Z1@G}0Z?w|4dM6(wP6-q?ftuKAVi%8iZ z79`^QNo75O*a<=2vo4-~X7@8Rp#@QBf5Bb17@o!MqG#~j413&+f!-t^2YB5 z&1n6Uz_uXy5+*6cB!!ry(8Lmx6#B;z7-;=5Ng*aF#3Y57q!5!7Vv<5kQiw?kB~rhx z8-}+P@2UndNuie{k0>1r>6y&xM@G(6`+L5@OA9(O$Z9S9d{hgqMd!W!chc)?NZEl> z^MO%ooUDoE-K=lJ9@yT{-n{lv%suS}NrNYTr`pRCK64&Be{(GOvdEEuMyaZuTsJUq z$RvfBq|hlLQFI$ZG+uNh=S@)WOj3EgO;O#|#`Q(d0?9f} zgQf8#@veR*BgABc{+9$ZCL^>+YPc0IboPl1{pWpWCL<(>CgWyn<>NU^mtCAHAf>B4 zV<8YFtUbA`w9Y`!4TemynNzWX2q_F@GQ-}q)?A(=z FzXNoi1~dQw diff --git a/ffmpeg4java-windows-test/fixture-frame-30.png b/ffmpeg4java-windows-test/fixture-frame-30.png deleted file mode 100644 index bcd577d0f1e0049a73980adddd42333a494448c7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 43742 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 diff --git a/ffmpeg4java-windows-test/fixture-frame-40.png b/ffmpeg4java-windows-test/fixture-frame-40.png deleted file mode 100644 index 30172128df5fea9a6a14ad471862bf7306e2a8a9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 39977 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 diff --git a/ffmpeg4java-windows-test/pom.xml b/ffmpeg4java-windows-test/pom.xml deleted file mode 100644 index 3e96cba..0000000 --- a/ffmpeg4java-windows-test/pom.xml +++ /dev/null @@ -1,50 +0,0 @@ - - 4.0.0 - - com.nextbreakpoint - com.nextbreakpoint.ffmpeg4java - 7.0.1-1.1 - - com.nextbreakpoint.ffmpeg4java.windows.test - jar - FFmpeg4Java Windows Test - FFmpeg4Java provides a Java wrapper of FFmpeg library - - - com.nextbreakpoint - com.nextbreakpoint.ffmpeg4java.windows - ${project.version} - - - - - - org.apache.maven.plugins - maven-dependency-plugin - - - copy-lib - test-compile - - unpack - - - - - com.nextbreakpoint - com.nextbreakpoint.ffmpeg4java.windows - x86_64 - jar - true - ${project.build.directory}/lib - - - **/*.dll - - - - - - - diff --git a/ffmpeg4java-windows-test/src/test/java/com/nextbreakpoint/ffmpeg4java/windows/FFmpeg4JavaTest.java b/ffmpeg4java-windows-test/src/test/java/com/nextbreakpoint/ffmpeg4java/windows/FFmpeg4JavaTest.java deleted file mode 100644 index 02a15ac..0000000 --- a/ffmpeg4java-windows-test/src/test/java/com/nextbreakpoint/ffmpeg4java/windows/FFmpeg4JavaTest.java +++ /dev/null @@ -1,594 +0,0 @@ -package com.nextbreakpoint.ffmpeg4java.windows; - -import org.assertj.core.data.Offset; -import org.junit.jupiter.api.Test; - -import javax.imageio.ImageIO; -import java.awt.image.BufferedImage; -import java.awt.image.DataBufferInt; -import java.io.File; -import java.io.FileOutputStream; -import java.io.IOException; -import java.lang.foreign.Arena; -import java.lang.foreign.MemorySegment; -import java.lang.foreign.ValueLayout; -import java.util.function.BiConsumer; - -import static com.nextbreakpoint.ffmpeg4java.windows.Libffmpeg.avcodec_alloc_context3; -import static com.nextbreakpoint.ffmpeg4java.windows.Libffmpeg.avcodec_close; -import static com.nextbreakpoint.ffmpeg4java.windows.Libffmpeg.avcodec_open2; -import static com.nextbreakpoint.ffmpeg4java.windows.Libffmpeg.avcodec_parameters_from_context; -import static com.nextbreakpoint.ffmpeg4java.windows.Libffmpeg.avcodec_parameters_to_context; -import static com.nextbreakpoint.ffmpeg4java.windows.Libffmpeg.avcodec_receive_frame; -import static com.nextbreakpoint.ffmpeg4java.windows.Libffmpeg.avcodec_receive_packet; -import static com.nextbreakpoint.ffmpeg4java.windows.Libffmpeg.avcodec_send_frame; -import static com.nextbreakpoint.ffmpeg4java.windows.Libffmpeg.avcodec_send_packet; -import static com.nextbreakpoint.ffmpeg4java.windows.Libffmpeg.sws_freeContext; -import static com.nextbreakpoint.ffmpeg4java.windows.Libffmpeg.sws_getCachedContext; -import static com.nextbreakpoint.ffmpeg4java.windows.Libffmpeg.sws_scale; -import static com.nextbreakpoint.ffmpeg4java.windows.Libffmpeg_1.AV_CODEC_ID_NONE; -import static com.nextbreakpoint.ffmpeg4java.windows.Libffmpeg_1.AV_PKT_DATA_CPB_PROPERTIES; -import static com.nextbreakpoint.ffmpeg4java.windows.Libffmpeg_1.av_dump_format; -import static com.nextbreakpoint.ffmpeg4java.windows.Libffmpeg_1.av_frame_alloc; -import static com.nextbreakpoint.ffmpeg4java.windows.Libffmpeg_1.av_guess_format; -import static com.nextbreakpoint.ffmpeg4java.windows.Libffmpeg_1.av_packet_alloc; -import static com.nextbreakpoint.ffmpeg4java.windows.Libffmpeg_1.av_packet_rescale_ts; -import static com.nextbreakpoint.ffmpeg4java.windows.Libffmpeg_1.av_packet_unref; -import static com.nextbreakpoint.ffmpeg4java.windows.Libffmpeg_1.av_read_frame; -import static com.nextbreakpoint.ffmpeg4java.windows.Libffmpeg_1.av_stream_new_side_data; -import static com.nextbreakpoint.ffmpeg4java.windows.Libffmpeg_1.av_write_frame; -import static com.nextbreakpoint.ffmpeg4java.windows.Libffmpeg_1.av_write_trailer; -import static com.nextbreakpoint.ffmpeg4java.windows.Libffmpeg_1.avcodec_find_decoder; -import static com.nextbreakpoint.ffmpeg4java.windows.Libffmpeg_1.avcodec_find_encoder; -import static com.nextbreakpoint.ffmpeg4java.windows.Libffmpeg_1.avcodec_parameters_alloc; -import static com.nextbreakpoint.ffmpeg4java.windows.Libffmpeg_1.avformat_alloc_context; -import static com.nextbreakpoint.ffmpeg4java.windows.Libffmpeg_1.avformat_close_input; -import static com.nextbreakpoint.ffmpeg4java.windows.Libffmpeg_1.avformat_find_stream_info; -import static com.nextbreakpoint.ffmpeg4java.windows.Libffmpeg_1.avformat_free_context; -import static com.nextbreakpoint.ffmpeg4java.windows.Libffmpeg_1.avformat_new_stream; -import static com.nextbreakpoint.ffmpeg4java.windows.Libffmpeg_1.avformat_open_input; -import static com.nextbreakpoint.ffmpeg4java.windows.Libffmpeg_1.avformat_write_header; -import static com.nextbreakpoint.ffmpeg4java.windows.Libffmpeg_1.avio_close; -import static com.nextbreakpoint.ffmpeg4java.windows.Libffmpeg_1.avio_open2; -import static com.nextbreakpoint.ffmpeg4java.windows.Libffmpeg_2.AVIO_FLAG_WRITE; -import static com.nextbreakpoint.ffmpeg4java.windows.Libffmpeg_2.AVMEDIA_TYPE_VIDEO; -import static com.nextbreakpoint.ffmpeg4java.windows.Libffmpeg_2.AV_PIX_FMT_RGB24; -import static com.nextbreakpoint.ffmpeg4java.windows.Libffmpeg_2.AV_PIX_FMT_YUV420P; -import static com.nextbreakpoint.ffmpeg4java.windows.Libffmpeg_2.C_POINTER; -import static com.nextbreakpoint.ffmpeg4java.windows.Libffmpeg_2.SWS_BILINEAR; -import static com.nextbreakpoint.ffmpeg4java.windows.Libffmpeg_2.av_free; -import static com.nextbreakpoint.ffmpeg4java.windows.Libffmpeg_2.av_image_alloc; -import static com.nextbreakpoint.ffmpeg4java.windows.Libffmpeg_2.av_image_fill_arrays; -import static com.nextbreakpoint.ffmpeg4java.windows.Libffmpeg_2.av_image_get_buffer_size; -import static java.lang.foreign.MemorySegment.NULL; -import static org.assertj.core.api.Assertions.assertThat; - -class FFmpeg4JavaTest { - @Test - public void shouldDecode48Frames() { - int frameCount = loadVideo(getFileName("fixture-video-48.mpg"), FFmpeg4JavaTest::printFrame); - assertThat(frameCount).isEqualTo(48); - } - - @Test - public void shouldEncode48Frames() { - int fps = 24; - int frames = 48; - int frameWidth = 640; - int frameHeight = 480; - int frameCount = saveVideo(getFileName("test-video-48.mpg"), fps, frames, frameWidth, frameHeight, FFmpeg4JavaTest::printFrame); - assertThat(frameCount).isEqualTo(frames); - } - - @Test - public void shouldDecodeFrames() throws IOException { - int frameWidth = 640; - int frameHeight = 480; - final BufferedImage image = new BufferedImage(frameWidth, frameHeight, BufferedImage.TYPE_INT_ARGB); - loadVideo(getFileName("fixture-video-48.mpg"), (frameCount, bytes) -> saveFrame(frameCount, image, bytes)); - assertThat(error(convertFormat(loadImage(getFileName("fixture-frame-10.png"))), convertFormat(loadImage(getFileName("test-frame-10.png"))))).isCloseTo(0.0, Offset.offset(10.0)); - assertThat(error(convertFormat(loadImage(getFileName("fixture-frame-20.png"))), convertFormat(loadImage(getFileName("test-frame-20.png"))))).isCloseTo(0.0, Offset.offset(10.0)); - assertThat(error(convertFormat(loadImage(getFileName("fixture-frame-30.png"))), convertFormat(loadImage(getFileName("test-frame-30.png"))))).isCloseTo(0.0, Offset.offset(10.0)); - assertThat(error(convertFormat(loadImage(getFileName("fixture-frame-40.png"))), convertFormat(loadImage(getFileName("test-frame-40.png"))))).isCloseTo(0.0, Offset.offset(10.0)); - } - - @Test - public void shouldEncodeFrames() throws IOException { - int fps = 24; - int frames = 48; - int frameWidth = 640; - int frameHeight = 480; - final BufferedImage image = new BufferedImage(frameWidth, frameHeight, BufferedImage.TYPE_INT_ARGB); - saveVideo(getFileName("test-video-48.mpg"), fps, frames, frameWidth, frameHeight, (frameCount, bytes) -> printFrame(frameCount, bytes, frames)); - loadVideo(getFileName("test-video-48.mpg"), (frameCount, bytes) -> saveFrame(frameCount, image, bytes)); - assertThat(error(convertFormat(loadImage(getFileName("fixture-frame-10.png"))), convertFormat(loadImage(getFileName("test-frame-10.png"))))).isCloseTo(0.0, Offset.offset(10.0)); - assertThat(error(convertFormat(loadImage(getFileName("fixture-frame-20.png"))), convertFormat(loadImage(getFileName("test-frame-20.png"))))).isCloseTo(0.0, Offset.offset(10.0)); - assertThat(error(convertFormat(loadImage(getFileName("fixture-frame-30.png"))), convertFormat(loadImage(getFileName("test-frame-30.png"))))).isCloseTo(0.0, Offset.offset(10.0)); - assertThat(error(convertFormat(loadImage(getFileName("fixture-frame-40.png"))), convertFormat(loadImage(getFileName("test-frame-40.png"))))).isCloseTo(0.0, Offset.offset(10.0)); - } - - private static int loadVideo(String fileName, BiConsumer consumer) { - int frameCount = 0; - - try (var arena = Arena.ofConfined()) { - var ppInputFormatCtx = NULL; - var pInputCodecCtx = NULL; - var pInputSwsContext = NULL; - var pInputRGBFrame = NULL; - var pInputRGBBuffer = NULL; - var pInputTMPFrame = NULL; - var pInputPacket = NULL; - - try { - ppInputFormatCtx = arena.allocate(C_POINTER); - - final var pInputFileName = arena.allocateFrom(fileName); - - if (avformat_open_input(ppInputFormatCtx, pInputFileName, NULL, NULL) != 0) { - throw new RuntimeException(formatLoadVideoError(fileName, "Can't open file")); - } - - final var pInputFormatCtx = ppInputFormatCtx.get(C_POINTER, 0); - - if (avformat_find_stream_info(pInputFormatCtx, NULL) != 0) { - throw new RuntimeException(formatLoadVideoError(fileName, "Can't find stream info")); - } - - av_dump_format(pInputFormatCtx, 0, pInputFileName, 0); - - final int nbStreams = AVFormatContext.nb_streams(pInputFormatCtx); - final var pInputStreams = AVFormatContext.streams(pInputFormatCtx); - - var pInputCodecParameters = NULL; - int videoStreamIndex = -1; - var pInputCodec = NULL; - - for (int i = 0; i < nbStreams; i++) { - final var pStream = pInputStreams.getAtIndex(C_POINTER, i); - - final var pVideoCodecParameters = AVStream.codecpar(pStream); - - final var codecType = AVCodecParameters.codec_type(pVideoCodecParameters); - - if (codecType == AVMEDIA_TYPE_VIDEO()) { - videoStreamIndex = i; - pInputCodecParameters = pVideoCodecParameters; - pInputCodec = avcodec_find_decoder(AVCodecParameters.codec_id(pVideoCodecParameters)); - break; - } - } - - if (videoStreamIndex == -1) { - throw new RuntimeException(formatLoadVideoError(fileName, "Can't find video stream")); - } - - if (pInputCodec.equals(NULL)) { - throw new RuntimeException(formatLoadVideoError(fileName, "Can't find decoder")); - } - - pInputCodecCtx = avcodec_alloc_context3(pInputCodec); - - if (avcodec_parameters_to_context(pInputCodecCtx, pInputCodecParameters) != 0) { - throw new RuntimeException(formatLoadVideoError(fileName, "Can't copy codec parameters")); - } - - if (pInputCodecCtx.equals(NULL)) { - throw new RuntimeException(formatLoadVideoError(fileName, "Can't allocate codec context")); - } - - if (avcodec_open2(pInputCodecCtx, pInputCodec, NULL) < 0) { - throw new RuntimeException(formatLoadVideoError(fileName, "Can't open decoder")); - } - - final int frameWidth = AVCodecContext.width(pInputCodecCtx); - final int frameHeight = AVCodecContext.height(pInputCodecCtx); - final int pixelFormat = AVCodecContext.pix_fmt(pInputCodecCtx); - - pInputSwsContext = sws_getCachedContext(NULL, frameWidth, frameHeight, pixelFormat, frameWidth, frameHeight, AV_PIX_FMT_RGB24(), SWS_BILINEAR(), NULL, NULL, NULL); - - if (pInputSwsContext.equals(NULL)) { - throw new RuntimeException(formatLoadVideoError(fileName, "Can't allocate scale context")); - } - - pInputRGBFrame = av_frame_alloc(); - pInputTMPFrame = av_frame_alloc(); - - if (pInputRGBFrame.equals(NULL)) { - throw new RuntimeException(formatLoadVideoError(fileName, "Can't allocate RGB frame")); - } - - if (pInputTMPFrame.equals(NULL)) { - throw new RuntimeException(formatLoadVideoError(fileName, "Can't allocate TMP frame")); - } - - final int rgbByteSize = av_image_get_buffer_size(AV_PIX_FMT_RGB24(), frameWidth, frameHeight, 1); - - pInputRGBBuffer = arena.allocate(ValueLayout.OfByte.JAVA_BYTE, rgbByteSize); - - if (pInputRGBBuffer.equals(NULL)) { - throw new RuntimeException(formatLoadVideoError(fileName, "Can't allocate RGB buffer")); - } - - av_image_fill_arrays(AVFrame.data(pInputRGBFrame), AVFrame.linesize(pInputRGBFrame), pInputRGBBuffer, AV_PIX_FMT_RGB24(), frameWidth, frameHeight, 1); - - pInputPacket = av_packet_alloc(); - - if (pInputPacket.equals(NULL)) { - throw new RuntimeException(formatLoadVideoError(fileName, "Can't allocate packet")); - } - - if (rgbByteSize != 3 * frameWidth * frameHeight) { - throw new RuntimeException(formatLoadVideoError(fileName, "Unexpected buffer size")); - } - - final byte[] buffer = new byte[rgbByteSize]; - - while (av_read_frame(pInputFormatCtx, pInputPacket) == 0) { - if (AVPacket.stream_index(pInputPacket) == videoStreamIndex) { - if (avcodec_send_packet(pInputCodecCtx, pInputPacket) == 0) { - while (avcodec_receive_frame(pInputCodecCtx, pInputTMPFrame) == 0) { - sws_scale(pInputSwsContext, AVFrame.data(pInputTMPFrame), AVFrame.linesize(pInputTMPFrame), 0, frameHeight, AVFrame.data(pInputRGBFrame), AVFrame.linesize(pInputRGBFrame)); - - final var pInputData = AVFrame.data(pInputRGBFrame); - MemorySegment.copy(pInputData.get(C_POINTER, 0), 0, MemorySegment.ofArray(buffer), 0, rgbByteSize); - - consumer.accept(++frameCount, buffer); - } - } - } - } - - if (avcodec_send_packet(pInputCodecCtx, NULL) == 0) { - while (avcodec_receive_frame(pInputCodecCtx, pInputTMPFrame) == 0) { - sws_scale(pInputSwsContext, AVFrame.data(pInputTMPFrame), AVFrame.linesize(pInputTMPFrame), 0, frameHeight, AVFrame.data(pInputRGBFrame), AVFrame.linesize(pInputRGBFrame)); - - final var pInputData = AVFrame.data(pInputRGBFrame); - MemorySegment.copy(pInputData.get(C_POINTER, 0), 0, MemorySegment.ofArray(buffer), 0, rgbByteSize); - - consumer.accept(++frameCount, buffer); - } - } - } finally { - if (!pInputPacket.equals(NULL)) { - av_packet_unref(pInputPacket); - } - - if (!pInputCodecCtx.equals(NULL)) { - avcodec_close(pInputCodecCtx); - } - - if (!pInputSwsContext.equals(NULL)) { - sws_freeContext(pInputSwsContext); - } - - if (!pInputTMPFrame.equals(NULL)) { - av_free(pInputTMPFrame); - } - - if (!pInputRGBFrame.equals(NULL)) { - av_free(pInputRGBFrame); - } - - if (!ppInputFormatCtx.equals(NULL)) { - avformat_close_input(ppInputFormatCtx); - } - } - } - return frameCount; - } - - private static int saveVideo(String fileName, int fps, int frames, int frameWidth, int frameHeight, BiConsumer consumer) { - int frameCount = 0; - - try (var arena = Arena.ofConfined()) { - var pOutputFormatCtx = NULL; - var pOutputCodecCtx = NULL; - var pOutputAVIOCtx = NULL; - var pOutputSwsContext = NULL; - var pOutputRGBFrame = NULL; - var pOutputYUVFrame = NULL; - var pOutputRGBBuffer = NULL; - var pOutputYUVBuffer = NULL; - - try { - pOutputFormatCtx = avformat_alloc_context(); - - if (pOutputFormatCtx.equals(NULL)) { - throw new RuntimeException(formatSaveVideoError(fileName, "Can't allocate format context")); - } - - final var pOutputFileName = arena.allocateFrom(fileName); - - final var pOutputFormat = av_guess_format(NULL, pOutputFileName, NULL); - - if (pOutputFormat.equals(NULL)) { - throw new RuntimeException(formatSaveVideoError(fileName, "Can't allocate output format")); - } - - final int outputVideoCodec = AVOutputFormat.video_codec(pOutputFormat); - - if (outputVideoCodec == AV_CODEC_ID_NONE()) { - throw new RuntimeException(formatSaveVideoError(fileName, "Video codec not found")); - } - - AVFormatContext.oformat(pOutputFormatCtx, pOutputFormat); - - final var pOutputCodec = avcodec_find_encoder(outputVideoCodec); - - if (pOutputCodec.equals(NULL)) { - throw new RuntimeException(formatSaveVideoError(fileName, "Can't find encoder")); - } - - pOutputCodecCtx = avcodec_alloc_context3(pOutputCodec); - - if (pOutputCodecCtx.equals(NULL)) { - throw new RuntimeException(formatSaveVideoError(fileName, "Can't allocate codec context")); - } - - final var pTimeBase = arena.allocate(AVRational.layout()); - AVRational.num(pTimeBase, 1); - AVRational.den(pTimeBase, fps); - - AVCodecContext.codec_id(pOutputCodecCtx, outputVideoCodec); - AVCodecContext.codec_type(pOutputCodecCtx, AVMEDIA_TYPE_VIDEO()); - AVCodecContext.width(pOutputCodecCtx, frameWidth); - AVCodecContext.height(pOutputCodecCtx, frameHeight); - AVCodecContext.pix_fmt(pOutputCodecCtx, AV_PIX_FMT_YUV420P()); - AVCodecContext.time_base(pOutputCodecCtx, pTimeBase); - AVCodecContext.gop_size(pOutputCodecCtx, 4); - AVCodecContext.bit_rate(pOutputCodecCtx, 4096); - AVCodecContext.max_b_frames(pOutputCodecCtx, 2); - - final var pOutputStream = avformat_new_stream(pOutputFormatCtx, pOutputCodec); - - if (pOutputStream.equals(NULL)) { - throw new RuntimeException(formatSaveVideoError(fileName, "Can't create stream")); - } - - if (AVFormatContext.nb_streams(pOutputFormatCtx) != 1) { - throw new RuntimeException(formatSaveVideoError(fileName, "Unexpected number of streams")); - } - - final var pOutputCodecParameters = avcodec_parameters_alloc(); - - if (pOutputCodecParameters.equals(NULL)) { - throw new RuntimeException(formatSaveVideoError(fileName, "Can't allocate codec parameters")); - } - - if (avcodec_parameters_from_context(pOutputCodecParameters, pOutputCodecCtx) != 0) { - throw new RuntimeException(formatLoadVideoError(fileName, "Can't copy codec parameters")); - } - - AVCodecParameters.codec_id(pOutputCodecParameters, outputVideoCodec); - AVCodecParameters.codec_type(pOutputCodecParameters, AVMEDIA_TYPE_VIDEO()); - AVCodecParameters.width(pOutputCodecParameters, frameWidth); - AVCodecParameters.height(pOutputCodecParameters, frameHeight); - AVStream.codecpar(pOutputStream, pOutputCodecParameters); - AVStream.time_base(pOutputStream, pTimeBase); - - final var pOutputProperties = av_stream_new_side_data(pOutputStream, AV_PKT_DATA_CPB_PROPERTIES(), AVCPBProperties.sizeof()); - AVCPBProperties.buffer_size(pOutputProperties, frameWidth * frameHeight * 3L * 2L); - - if (avcodec_open2(pOutputCodecCtx, pOutputCodec, NULL) != 0) { - throw new RuntimeException(formatSaveVideoError(fileName, "Can't open encoder")); - } - - final var ppOutputAVIOCtx = arena.allocate(C_POINTER); - - if (avio_open2(ppOutputAVIOCtx, pOutputFileName, AVIO_FLAG_WRITE(), NULL, NULL) < 0) { - throw new RuntimeException(formatSaveVideoError(fileName, "Can't open file")); - } - - pOutputAVIOCtx = ppOutputAVIOCtx.get(C_POINTER, 0); - - if (pOutputAVIOCtx.equals(NULL)) { - throw new RuntimeException(formatLoadVideoError(fileName, "Can't allocate IO context")); - } - - AVFormatContext.pb(pOutputFormatCtx, pOutputAVIOCtx); - - pOutputSwsContext = sws_getCachedContext(NULL, frameWidth, frameHeight, AV_PIX_FMT_RGB24(), frameWidth, frameHeight, AV_PIX_FMT_YUV420P(), SWS_BILINEAR(), NULL, NULL, NULL); - - if (pOutputSwsContext.equals(NULL)) { - throw new RuntimeException(formatLoadVideoError(fileName, "Can't allocate scale context")); - } - - pOutputRGBFrame = av_frame_alloc(); - pOutputYUVFrame = av_frame_alloc(); - - if (pOutputRGBFrame.equals(NULL)) { - throw new RuntimeException(formatLoadVideoError(fileName, "Can't allocate RGB frame")); - } - - if (pOutputYUVFrame.equals(NULL)) { - throw new RuntimeException(formatLoadVideoError(fileName, "Can't allocate YUV frame")); - } - - AVFrame.width(pOutputRGBFrame, frameWidth); - AVFrame.height(pOutputRGBFrame, frameHeight); - AVFrame.format(pOutputRGBFrame, AV_PIX_FMT_RGB24()); - AVFrame.width(pOutputYUVFrame, frameWidth); - AVFrame.height(pOutputYUVFrame, frameHeight); - AVFrame.format(pOutputYUVFrame, AV_PIX_FMT_YUV420P()); - - av_image_alloc(AVFrame.data(pOutputRGBFrame), AVFrame.linesize(pOutputRGBFrame), frameWidth, frameHeight, AV_PIX_FMT_RGB24(), 1); - av_image_alloc(AVFrame.data(pOutputYUVFrame), AVFrame.linesize(pOutputYUVFrame), frameWidth, frameHeight, AV_PIX_FMT_YUV420P(), 1); - - final int rgbByteSize = av_image_get_buffer_size(AV_PIX_FMT_RGB24(), frameWidth, frameHeight, 1); - final int yuvByteSize = av_image_get_buffer_size(AV_PIX_FMT_YUV420P(), frameWidth, frameHeight, 1); - - pOutputRGBBuffer = arena.allocate(rgbByteSize); - pOutputYUVBuffer = arena.allocate(yuvByteSize); - - if (pOutputRGBBuffer.equals(NULL)) { - throw new RuntimeException(formatLoadVideoError(fileName, "Can't allocate RGB buffer")); - } - - if (pOutputYUVBuffer.equals(NULL)) { - throw new RuntimeException(formatLoadVideoError(fileName, "Can't allocate YUV buffer")); - } - - av_image_fill_arrays(AVFrame.data(pOutputRGBFrame), AVFrame.linesize(pOutputRGBFrame), pOutputRGBBuffer, AV_PIX_FMT_RGB24(), frameWidth, frameHeight, 1); - av_image_fill_arrays(AVFrame.data(pOutputYUVFrame), AVFrame.linesize(pOutputYUVFrame), pOutputYUVBuffer, AV_PIX_FMT_YUV420P(), frameWidth, frameHeight, 1); - - final var pOutputPacket = av_packet_alloc(); - - if (pOutputPacket.equals(NULL)) { - throw new RuntimeException(formatLoadVideoError(fileName, "Can't allocate packet")); - } - - AVPacket.stream_index(pOutputPacket, AVStream.index(pOutputStream)); - - if (rgbByteSize != 3 * frameWidth * frameHeight) { - throw new RuntimeException(formatLoadVideoError(fileName, "Unexpected buffer size")); - } - - final byte[] buffer = new byte[rgbByteSize]; - - avformat_write_header(pOutputFormatCtx, NULL); - - for (int frame = 0; frame < frames; frame++) { - final var pOutputData = AVFrame.data(pOutputRGBFrame); - fillPixels(buffer, frameWidth, frameHeight, ((float) frame / (frames - 1))); - MemorySegment.copy(MemorySegment.ofArray(buffer), 0, pOutputData.get(C_POINTER, 0), 0, rgbByteSize); - - consumer.accept(++frameCount, buffer); - - sws_scale(pOutputSwsContext, AVFrame.data(pOutputRGBFrame), AVFrame.linesize(pOutputRGBFrame), 0, frameHeight, AVFrame.data(pOutputYUVFrame), AVFrame.linesize(pOutputYUVFrame)); - - if (avcodec_send_frame(pOutputCodecCtx, pOutputYUVFrame) == 0) { - while (avcodec_receive_packet(pOutputCodecCtx, pOutputPacket) == 0) { - av_packet_rescale_ts(pOutputPacket, AVCodecContext.time_base(pOutputCodecCtx), AVStream.time_base(pOutputStream)); - av_write_frame(pOutputFormatCtx, pOutputPacket); - } - av_write_frame(pOutputFormatCtx, NULL); - } - } - - if (avcodec_send_frame(pOutputCodecCtx, NULL) == 0) { - while (avcodec_receive_packet(pOutputCodecCtx, pOutputPacket) == 0) { - av_packet_rescale_ts(pOutputPacket, AVCodecContext.time_base(pOutputCodecCtx), AVStream.time_base(pOutputStream)); - av_write_frame(pOutputFormatCtx, pOutputPacket); - } - av_write_frame(pOutputFormatCtx, NULL); - } - - av_write_trailer(pOutputFormatCtx); - } finally { - if (!pOutputAVIOCtx.equals(NULL)) { - avio_close(pOutputAVIOCtx); - } - - if (!pOutputCodecCtx.equals(NULL)) { - avcodec_close(pOutputCodecCtx); - } - - if (!pOutputSwsContext.equals(NULL)) { - sws_freeContext(pOutputSwsContext); - } - - if (!pOutputYUVFrame.equals(NULL)) { - av_free(pOutputYUVFrame); - } - - if (!pOutputRGBFrame.equals(NULL)) { - av_free(pOutputRGBFrame); - } - - if (!pOutputFormatCtx.equals(NULL)) { - avformat_free_context(pOutputFormatCtx); - } - } - } - - return frameCount; - } - - private static String formatLoadVideoError(String fileName, String message) { - return STR."Load video failed (file = \{fileName}). \{message}"; - } - - private static String formatSaveVideoError(String fileName, String message) { - return STR."Save video failed (file = \{fileName}). \{message}"; - } - - private static void fillPixels(byte[] data, int width, int height, float color) { - byte p = (byte) (255 * color); - for (int x = 0; x < width; x += 1) { - for (int y = 0; y < height; y += 1) { - int j = (y * width + x) * 3; - if ((x / 5) % 2 == 0 || (y / 5) % 2 == 1) { - data[j + 0] = p; - data[j + 1] = p; - data[j + 2] = p; - } else { - data[j + 0] = 0; - data[j + 1] = 0; - data[j + 2] = 0; - } - } - } - } - - private static void writeImage(BufferedImage image, int frame, String name) { - if (frame % 10 == 0) { - try (FileOutputStream output = new FileOutputStream(name)) { - ImageIO.write(image, "png", output); - } catch (IOException e) { - e.printStackTrace(); - } - } - } - - private static void copyPixelsIntoImage(byte[] data, BufferedImage image) { - int[] rgb_data = ((DataBufferInt) image.getData().getDataBuffer()).getData(); - for (int t = 0, k = 0; k < data.length; k += 3) { - rgb_data[t++] = 0xFF000000 | ((((int) data[k]) << 16) & 0x00FF0000) | ((((int) data[k]) << 8) & 0x0000FF00) | ((((int) data[k])) & 0x000000FF); - } - image.setRGB(0, 0, image.getWidth(), image.getHeight(), rgb_data, 0, image.getWidth()); - } - - private static int[] loadImage(String file) throws IOException { - BufferedImage image = ImageIO.read(new File(file)); - return image.getRGB(0, 0, image.getWidth(), image.getHeight(), null, 0, image.getWidth()); - } - - private static double error(byte[] data1, byte[] data2) { - double error = 0; - for (int j = 0; j < data1.length; j += 3) { - error += distance(data1, data2, j); - } - return error / (data1.length / 3.0); - } - - private static double distance(byte[] data1, byte[] data2, int i) { - return Math.sqrt(Math.pow(data1[i + 0] - data2[i + 0], 2) + Math.pow(data1[i + 1] - data2[i + 1], 2) + Math.pow(data1[i + 2] - data2[i + 2], 2)); - } - - private static byte[] convertFormat(int[] data) { - byte[] buffer = new byte[data.length * 3]; - for (int j = 0; j < data.length; j += 1) { - buffer[j * 3 + 0] = (byte) (data[j] >> 16); - buffer[j * 3 + 1] = (byte) (data[j] >> 8); - buffer[j * 3 + 2] = (byte) (data[j] >> 0); - } - return buffer; - } - - private static void printFrame(int frameCount, byte[] bytes) { - System.out.println(STR."Frame \{frameCount}"); - } - - private static void printFrame(int frameCount, byte[] bytes, int frames) { - System.out.println(STR."Frame \{frameCount} [ \{frameCount * 100 / frames}% ]"); - } - - private static String getFileName(String file) { - return STR."\{System.getProperty("basedir", ".")}/\{file}"; - } - - private static void saveFrame(Integer frameCount, BufferedImage image, byte[] bytes) { - copyPixelsIntoImage(bytes, image); - writeImage(image, frameCount, getFileName(STR."test-frame-\{frameCount}.png")); - } -} \ No newline at end of file diff --git a/ffmpeg4java-windows/extract.sh b/ffmpeg4java-windows/extract.sh index 79f34af..21eccb4 100755 --- a/ffmpeg4java-windows/extract.sh +++ b/ffmpeg4java-windows/extract.sh @@ -7,7 +7,7 @@ export PATH=$PATH:${JEXTRACT_HOME}/bin jextract @includes.txt \ --output src/main/java \ - --target-package com.nextbreakpoint.ffmpeg4java.windows \ + --target-package com.nextbreakpoint.ffmpeg4java \ --include-dir "${FFMPEG_HOME}" \ --include-dir "${INCLUDE_PATH}" \ --use-system-load-library \ diff --git a/ffmpeg4java-windows/pom.xml b/ffmpeg4java-windows/pom.xml index 0f48da6..43ba85b 100644 --- a/ffmpeg4java-windows/pom.xml +++ b/ffmpeg4java-windows/pom.xml @@ -4,7 +4,7 @@ com.nextbreakpoint com.nextbreakpoint.ffmpeg4java - 7.0.1-1.1 + 7.0.1-1.2 com.nextbreakpoint.ffmpeg4java.windows jar diff --git a/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVBufferRef.java b/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVBufferRef.java similarity index 99% rename from ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVBufferRef.java rename to ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVBufferRef.java index b3095fc..bb921e5 100644 --- a/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVBufferRef.java +++ b/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVBufferRef.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.windows; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVCPBProperties.java b/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVCPBProperties.java similarity index 99% rename from ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVCPBProperties.java rename to ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVCPBProperties.java index 5bf18f6..7daf5eb 100644 --- a/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVCPBProperties.java +++ b/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVCPBProperties.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.windows; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVChannelCustom.java b/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVChannelCustom.java similarity index 99% rename from ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVChannelCustom.java rename to ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVChannelCustom.java index 0d615bb..0b26dd6 100644 --- a/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVChannelCustom.java +++ b/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVChannelCustom.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.windows; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVChannelLayout.java b/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVChannelLayout.java similarity index 99% rename from ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVChannelLayout.java rename to ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVChannelLayout.java index 06c40ef..b033af9 100644 --- a/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVChannelLayout.java +++ b/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVChannelLayout.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.windows; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVChapter.java b/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVChapter.java similarity index 99% rename from ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVChapter.java rename to ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVChapter.java index 9e264e6..d4f10e0 100644 --- a/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVChapter.java +++ b/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVChapter.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.windows; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVClass.java b/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVClass.java similarity index 99% rename from ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVClass.java rename to ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVClass.java index 1b9f6ed..0d14566 100644 --- a/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVClass.java +++ b/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVClass.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.windows; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVCodec.java b/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVCodec.java similarity index 99% rename from ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVCodec.java rename to ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVCodec.java index 2a3baa8..2886e44 100644 --- a/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVCodec.java +++ b/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVCodec.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.windows; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVCodecContext.java b/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVCodecContext.java similarity index 99% rename from ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVCodecContext.java rename to ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVCodecContext.java index cdd8946..ff3ea62 100644 --- a/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVCodecContext.java +++ b/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVCodecContext.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.windows; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVCodecDescriptor.java b/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVCodecDescriptor.java similarity index 99% rename from ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVCodecDescriptor.java rename to ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVCodecDescriptor.java index 87aef94..77178c5 100644 --- a/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVCodecDescriptor.java +++ b/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVCodecDescriptor.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.windows; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVCodecHWConfig.java b/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVCodecHWConfig.java similarity index 99% rename from ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVCodecHWConfig.java rename to ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVCodecHWConfig.java index 11c9121..379dc37 100644 --- a/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVCodecHWConfig.java +++ b/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVCodecHWConfig.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.windows; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVCodecParameters.java b/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVCodecParameters.java similarity index 99% rename from ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVCodecParameters.java rename to ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVCodecParameters.java index fa60d97..c51b4a0 100644 --- a/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVCodecParameters.java +++ b/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVCodecParameters.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.windows; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVCodecParser.java b/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVCodecParser.java similarity index 99% rename from ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVCodecParser.java rename to ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVCodecParser.java index 27d5d1e..8d56a8d 100644 --- a/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVCodecParser.java +++ b/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVCodecParser.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.windows; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVCodecParserContext.java b/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVCodecParserContext.java similarity index 99% rename from ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVCodecParserContext.java rename to ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVCodecParserContext.java index 6491fb5..02fa588 100644 --- a/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVCodecParserContext.java +++ b/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVCodecParserContext.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.windows; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVComponentDescriptor.java b/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVComponentDescriptor.java similarity index 99% rename from ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVComponentDescriptor.java rename to ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVComponentDescriptor.java index 9920b9d..a532085 100644 --- a/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVComponentDescriptor.java +++ b/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVComponentDescriptor.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.windows; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVDeviceInfo.java b/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVDeviceInfo.java similarity index 99% rename from ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVDeviceInfo.java rename to ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVDeviceInfo.java index d681bf0..1178f5a 100644 --- a/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVDeviceInfo.java +++ b/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVDeviceInfo.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.windows; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVDeviceInfoList.java b/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVDeviceInfoList.java similarity index 99% rename from ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVDeviceInfoList.java rename to ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVDeviceInfoList.java index 8264fb5..a0d75dd 100644 --- a/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVDeviceInfoList.java +++ b/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVDeviceInfoList.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.windows; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVDeviceRect.java b/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVDeviceRect.java similarity index 99% rename from ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVDeviceRect.java rename to ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVDeviceRect.java index ed4ffce..4cde344 100644 --- a/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVDeviceRect.java +++ b/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVDeviceRect.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.windows; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVDictionaryEntry.java b/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVDictionaryEntry.java similarity index 98% rename from ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVDictionaryEntry.java rename to ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVDictionaryEntry.java index 320c8df..683cea7 100644 --- a/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVDictionaryEntry.java +++ b/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVDictionaryEntry.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.windows; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVFilter.java b/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVFilter.java similarity index 99% rename from ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVFilter.java rename to ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVFilter.java index 7b8dd7f..39b080b 100644 --- a/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVFilter.java +++ b/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVFilter.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.windows; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVFilterChain.java b/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVFilterChain.java similarity index 99% rename from ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVFilterChain.java rename to ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVFilterChain.java index 5f8b931..48c1ae8 100644 --- a/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVFilterChain.java +++ b/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVFilterChain.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.windows; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVFilterContext.java b/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVFilterContext.java similarity index 99% rename from ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVFilterContext.java rename to ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVFilterContext.java index d9d82c2..e3ba06f 100644 --- a/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVFilterContext.java +++ b/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVFilterContext.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.windows; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVFilterFormatsConfig.java b/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVFilterFormatsConfig.java similarity index 99% rename from ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVFilterFormatsConfig.java rename to ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVFilterFormatsConfig.java index 0afbe7e..67bbb6c 100644 --- a/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVFilterFormatsConfig.java +++ b/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVFilterFormatsConfig.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.windows; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVFilterGraph.java b/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVFilterGraph.java similarity index 99% rename from ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVFilterGraph.java rename to ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVFilterGraph.java index b3d81fd..91cec07 100644 --- a/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVFilterGraph.java +++ b/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVFilterGraph.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.windows; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVFilterGraphSegment.java b/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVFilterGraphSegment.java similarity index 99% rename from ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVFilterGraphSegment.java rename to ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVFilterGraphSegment.java index 0873fcc..b00a36b 100644 --- a/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVFilterGraphSegment.java +++ b/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVFilterGraphSegment.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.windows; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVFilterInOut.java b/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVFilterInOut.java similarity index 99% rename from ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVFilterInOut.java rename to ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVFilterInOut.java index 5096433..6501b7c 100644 --- a/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVFilterInOut.java +++ b/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVFilterInOut.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.windows; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVFilterLink.java b/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVFilterLink.java similarity index 99% rename from ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVFilterLink.java rename to ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVFilterLink.java index 60dc805..1fa3a85 100644 --- a/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVFilterLink.java +++ b/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVFilterLink.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.windows; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVFilterPadParams.java b/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVFilterPadParams.java similarity index 98% rename from ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVFilterPadParams.java rename to ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVFilterPadParams.java index adbcdd8..b1cd7fd 100644 --- a/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVFilterPadParams.java +++ b/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVFilterPadParams.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.windows; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVFilterParams.java b/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVFilterParams.java similarity index 99% rename from ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVFilterParams.java rename to ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVFilterParams.java index 3e60a1b..010b9f0 100644 --- a/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVFilterParams.java +++ b/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVFilterParams.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.windows; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVFormatContext.java b/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVFormatContext.java similarity index 99% rename from ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVFormatContext.java rename to ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVFormatContext.java index b9141ca..79d54eb 100644 --- a/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVFormatContext.java +++ b/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVFormatContext.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.windows; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVFrame.java b/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVFrame.java similarity index 99% rename from ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVFrame.java rename to ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVFrame.java index fdf2080..e81dc09 100644 --- a/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVFrame.java +++ b/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVFrame.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.windows; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVFrameSideData.java b/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVFrameSideData.java similarity index 99% rename from ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVFrameSideData.java rename to ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVFrameSideData.java index 927a75c..6c5e619 100644 --- a/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVFrameSideData.java +++ b/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVFrameSideData.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.windows; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVHWAccel.java b/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVHWAccel.java similarity index 99% rename from ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVHWAccel.java rename to ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVHWAccel.java index f4971d7..dae7bd0 100644 --- a/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVHWAccel.java +++ b/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVHWAccel.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.windows; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVHWDeviceContext.java b/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVHWDeviceContext.java similarity index 99% rename from ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVHWDeviceContext.java rename to ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVHWDeviceContext.java index 9b93b6b..1f94470 100644 --- a/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVHWDeviceContext.java +++ b/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVHWDeviceContext.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.windows; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVHWFramesConstraints.java b/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVHWFramesConstraints.java similarity index 99% rename from ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVHWFramesConstraints.java rename to ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVHWFramesConstraints.java index a9768dd..6d22e25 100644 --- a/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVHWFramesConstraints.java +++ b/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVHWFramesConstraints.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.windows; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVHWFramesContext.java b/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVHWFramesContext.java similarity index 99% rename from ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVHWFramesContext.java rename to ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVHWFramesContext.java index 4679807..a4251f4 100644 --- a/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVHWFramesContext.java +++ b/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVHWFramesContext.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.windows; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVIOContext.java b/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVIOContext.java similarity index 99% rename from ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVIOContext.java rename to ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVIOContext.java index d919e76..a69e8f3 100644 --- a/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVIOContext.java +++ b/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVIOContext.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.windows; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVIODirEntry.java b/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVIODirEntry.java similarity index 99% rename from ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVIODirEntry.java rename to ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVIODirEntry.java index 46ad664..e64a08e 100644 --- a/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVIODirEntry.java +++ b/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVIODirEntry.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.windows; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVIOInterruptCB.java b/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVIOInterruptCB.java similarity index 99% rename from ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVIOInterruptCB.java rename to ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVIOInterruptCB.java index 37e83ca..a521135 100644 --- a/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVIOInterruptCB.java +++ b/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVIOInterruptCB.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.windows; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVIndexEntry.java b/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVIndexEntry.java similarity index 99% rename from ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVIndexEntry.java rename to ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVIndexEntry.java index aa3a2a3..fda9437 100644 --- a/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVIndexEntry.java +++ b/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVIndexEntry.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.windows; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVInputFormat.java b/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVInputFormat.java similarity index 99% rename from ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVInputFormat.java rename to ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVInputFormat.java index 6e802f0..efe0b61 100644 --- a/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVInputFormat.java +++ b/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVInputFormat.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.windows; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVOpenCallback.java b/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVOpenCallback.java similarity index 98% rename from ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVOpenCallback.java rename to ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVOpenCallback.java index 7ecb064..e20c405 100644 --- a/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVOpenCallback.java +++ b/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVOpenCallback.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.windows; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVOption.java b/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVOption.java similarity index 99% rename from ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVOption.java rename to ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVOption.java index 7e61996..a1f3e43 100644 --- a/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVOption.java +++ b/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVOption.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.windows; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVOptionArrayDef.java b/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVOptionArrayDef.java similarity index 99% rename from ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVOptionArrayDef.java rename to ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVOptionArrayDef.java index 5cb0c83..f12e951 100644 --- a/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVOptionArrayDef.java +++ b/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVOptionArrayDef.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.windows; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVOptionRange.java b/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVOptionRange.java similarity index 99% rename from ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVOptionRange.java rename to ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVOptionRange.java index 129a82b..4133f7f 100644 --- a/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVOptionRange.java +++ b/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVOptionRange.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.windows; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVOptionRanges.java b/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVOptionRanges.java similarity index 99% rename from ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVOptionRanges.java rename to ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVOptionRanges.java index 02f0d0b..1bef27a 100644 --- a/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVOptionRanges.java +++ b/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVOptionRanges.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.windows; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVOutputFormat.java b/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVOutputFormat.java similarity index 99% rename from ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVOutputFormat.java rename to ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVOutputFormat.java index e3da478..89c749d 100644 --- a/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVOutputFormat.java +++ b/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVOutputFormat.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.windows; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVPacket.java b/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVPacket.java similarity index 99% rename from ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVPacket.java rename to ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVPacket.java index e17538f..e80349a 100644 --- a/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVPacket.java +++ b/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVPacket.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.windows; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVPacketList.java b/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVPacketList.java similarity index 98% rename from ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVPacketList.java rename to ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVPacketList.java index 43fca17..2107496 100644 --- a/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVPacketList.java +++ b/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVPacketList.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.windows; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVPacketSideData.java b/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVPacketSideData.java similarity index 99% rename from ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVPacketSideData.java rename to ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVPacketSideData.java index eb50bb1..301a1e9 100644 --- a/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVPacketSideData.java +++ b/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVPacketSideData.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.windows; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVPanScan.java b/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVPanScan.java similarity index 99% rename from ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVPanScan.java rename to ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVPanScan.java index 9cdc9a5..38575f0 100644 --- a/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVPanScan.java +++ b/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVPanScan.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.windows; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVPixFmtDescriptor.java b/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVPixFmtDescriptor.java similarity index 99% rename from ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVPixFmtDescriptor.java rename to ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVPixFmtDescriptor.java index e0c4b9c..16d6da8 100644 --- a/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVPixFmtDescriptor.java +++ b/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVPixFmtDescriptor.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.windows; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVProbeData.java b/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVProbeData.java similarity index 99% rename from ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVProbeData.java rename to ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVProbeData.java index 99bc221..4fe0f55 100644 --- a/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVProbeData.java +++ b/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVProbeData.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.windows; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVProducerReferenceTime.java b/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVProducerReferenceTime.java similarity index 98% rename from ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVProducerReferenceTime.java rename to ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVProducerReferenceTime.java index 26bd77e..eb9b61e 100644 --- a/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVProducerReferenceTime.java +++ b/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVProducerReferenceTime.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.windows; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVProfile.java b/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVProfile.java similarity index 98% rename from ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVProfile.java rename to ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVProfile.java index e3e7494..ca4a47e 100644 --- a/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVProfile.java +++ b/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVProfile.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.windows; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVProgram.java b/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVProgram.java similarity index 99% rename from ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVProgram.java rename to ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVProgram.java index 094126c..d8d3b76 100644 --- a/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVProgram.java +++ b/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVProgram.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.windows; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVRational.java b/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVRational.java similarity index 98% rename from ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVRational.java rename to ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVRational.java index 2fb6334..a3aa8b3 100644 --- a/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVRational.java +++ b/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVRational.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.windows; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVRegionOfInterest.java b/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVRegionOfInterest.java similarity index 99% rename from ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVRegionOfInterest.java rename to ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVRegionOfInterest.java index 5d8eadf..f9ac4e0 100644 --- a/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVRegionOfInterest.java +++ b/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVRegionOfInterest.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.windows; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVStream.java b/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVStream.java similarity index 99% rename from ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVStream.java rename to ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVStream.java index 0008ab1..72db74d 100644 --- a/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVStream.java +++ b/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVStream.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.windows; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVStreamGroup.java b/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVStreamGroup.java similarity index 99% rename from ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVStreamGroup.java rename to ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVStreamGroup.java index 4f3da0c..47585eb 100644 --- a/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVStreamGroup.java +++ b/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVStreamGroup.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.windows; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVStreamGroupTileGrid.java b/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVStreamGroupTileGrid.java similarity index 99% rename from ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVStreamGroupTileGrid.java rename to ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVStreamGroupTileGrid.java index 9ff8439..2ed49e2 100644 --- a/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVStreamGroupTileGrid.java +++ b/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVStreamGroupTileGrid.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.windows; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVSubtitle.java b/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVSubtitle.java similarity index 99% rename from ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVSubtitle.java rename to ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVSubtitle.java index e69ba2c..de2c6f0 100644 --- a/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVSubtitle.java +++ b/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVSubtitle.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.windows; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVSubtitleRect.java b/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVSubtitleRect.java similarity index 99% rename from ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVSubtitleRect.java rename to ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVSubtitleRect.java index 5435248..4d5fb00 100644 --- a/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/AVSubtitleRect.java +++ b/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/AVSubtitleRect.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.windows; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/Libffmpeg.java b/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/Libffmpeg.java similarity index 99% rename from ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/Libffmpeg.java rename to ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/Libffmpeg.java index e2f6c88..9e9eed6 100644 --- a/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/Libffmpeg.java +++ b/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/Libffmpeg.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.windows; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/Libffmpeg_1.java b/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/Libffmpeg_1.java similarity index 99% rename from ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/Libffmpeg_1.java rename to ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/Libffmpeg_1.java index a3bf42d..f1171a5 100644 --- a/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/Libffmpeg_1.java +++ b/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/Libffmpeg_1.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.windows; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/Libffmpeg_2.java b/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/Libffmpeg_2.java similarity index 99% rename from ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/Libffmpeg_2.java rename to ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/Libffmpeg_2.java index c190e68..8cf45b6 100644 --- a/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/Libffmpeg_2.java +++ b/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/Libffmpeg_2.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.windows; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/RcOverride.java b/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/RcOverride.java similarity index 99% rename from ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/RcOverride.java rename to ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/RcOverride.java index 71e29d4..c20f227 100644 --- a/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/RcOverride.java +++ b/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/RcOverride.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.windows; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/SwsFilter.java b/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/SwsFilter.java similarity index 99% rename from ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/SwsFilter.java rename to ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/SwsFilter.java index 88b77c8..e34e594 100644 --- a/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/SwsFilter.java +++ b/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/SwsFilter.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.windows; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/SwsVector.java b/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/SwsVector.java similarity index 98% rename from ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/SwsVector.java rename to ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/SwsVector.java index 6d794a0..3d123ff 100644 --- a/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/SwsVector.java +++ b/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/SwsVector.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.windows; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/av_buffer_create$free.java b/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/av_buffer_create$free.java similarity index 97% rename from ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/av_buffer_create$free.java rename to ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/av_buffer_create$free.java index 44b8644..77dff7c 100644 --- a/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/av_buffer_create$free.java +++ b/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/av_buffer_create$free.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.windows; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/av_buffer_pool_init$alloc.java b/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/av_buffer_pool_init$alloc.java similarity index 97% rename from ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/av_buffer_pool_init$alloc.java rename to ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/av_buffer_pool_init$alloc.java index 9e1d3ee..b4544b4 100644 --- a/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/av_buffer_pool_init$alloc.java +++ b/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/av_buffer_pool_init$alloc.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.windows; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/av_buffer_pool_init2$alloc.java b/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/av_buffer_pool_init2$alloc.java similarity index 97% rename from ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/av_buffer_pool_init2$alloc.java rename to ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/av_buffer_pool_init2$alloc.java index 78e1d0e..b2cd42e 100644 --- a/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/av_buffer_pool_init2$alloc.java +++ b/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/av_buffer_pool_init2$alloc.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.windows; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/av_buffer_pool_init2$pool_free.java b/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/av_buffer_pool_init2$pool_free.java similarity index 97% rename from ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/av_buffer_pool_init2$pool_free.java rename to ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/av_buffer_pool_init2$pool_free.java index 76ac0ea..18ff37b 100644 --- a/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/av_buffer_pool_init2$pool_free.java +++ b/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/av_buffer_pool_init2$pool_free.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.windows; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/av_format_control_message.java b/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/av_format_control_message.java similarity index 98% rename from ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/av_format_control_message.java rename to ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/av_format_control_message.java index 1c02169..69d8a09 100644 --- a/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/av_format_control_message.java +++ b/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/av_format_control_message.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.windows; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/av_intfloat32.java b/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/av_intfloat32.java similarity index 98% rename from ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/av_intfloat32.java rename to ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/av_intfloat32.java index 418b664..e10b45b 100644 --- a/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/av_intfloat32.java +++ b/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/av_intfloat32.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.windows; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/av_intfloat64.java b/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/av_intfloat64.java similarity index 98% rename from ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/av_intfloat64.java rename to ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/av_intfloat64.java index a91b04b..5c9c235 100644 --- a/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/av_intfloat64.java +++ b/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/av_intfloat64.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.windows; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/av_log_set_callback$callback.java b/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/av_log_set_callback$callback.java similarity index 97% rename from ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/av_log_set_callback$callback.java rename to ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/av_log_set_callback$callback.java index e6aea23..d0fe43f 100644 --- a/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/av_log_set_callback$callback.java +++ b/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/av_log_set_callback$callback.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.windows; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/avcodec_default_execute$func.java b/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/avcodec_default_execute$func.java similarity index 97% rename from ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/avcodec_default_execute$func.java rename to ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/avcodec_default_execute$func.java index e0cebfc..ea9b1f5 100644 --- a/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/avcodec_default_execute$func.java +++ b/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/avcodec_default_execute$func.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.windows; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/avcodec_default_execute2$func.java b/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/avcodec_default_execute2$func.java similarity index 97% rename from ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/avcodec_default_execute2$func.java rename to ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/avcodec_default_execute2$func.java index 0e6105c..030cd52 100644 --- a/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/avcodec_default_execute2$func.java +++ b/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/avcodec_default_execute2$func.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.windows; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/avfilter_action_func.java b/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/avfilter_action_func.java similarity index 97% rename from ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/avfilter_action_func.java rename to ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/avfilter_action_func.java index d2cb29b..c71c86d 100644 --- a/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/avfilter_action_func.java +++ b/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/avfilter_action_func.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.windows; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/avfilter_execute_func.java b/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/avfilter_execute_func.java similarity index 97% rename from ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/avfilter_execute_func.java rename to ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/avfilter_execute_func.java index fb3aea2..37eaf39 100644 --- a/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/avfilter_execute_func.java +++ b/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/avfilter_execute_func.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.windows; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/avio_alloc_context$read_packet.java b/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/avio_alloc_context$read_packet.java similarity index 97% rename from ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/avio_alloc_context$read_packet.java rename to ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/avio_alloc_context$read_packet.java index e892330..f6132d7 100644 --- a/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/avio_alloc_context$read_packet.java +++ b/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/avio_alloc_context$read_packet.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.windows; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/avio_alloc_context$seek.java b/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/avio_alloc_context$seek.java similarity index 97% rename from ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/avio_alloc_context$seek.java rename to ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/avio_alloc_context$seek.java index 1dedc65..25aea59 100644 --- a/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/avio_alloc_context$seek.java +++ b/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/avio_alloc_context$seek.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.windows; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/avio_alloc_context$write_packet.java b/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/avio_alloc_context$write_packet.java similarity index 97% rename from ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/avio_alloc_context$write_packet.java rename to ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/avio_alloc_context$write_packet.java index f4dddd8..6468b5a 100644 --- a/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/windows/avio_alloc_context$write_packet.java +++ b/ffmpeg4java-windows/src/main/java/com/nextbreakpoint/ffmpeg4java/avio_alloc_context$write_packet.java @@ -1,6 +1,6 @@ // Generated by jextract -package com.nextbreakpoint.ffmpeg4java.windows; +package com.nextbreakpoint.ffmpeg4java; import java.lang.invoke.*; import java.lang.foreign.*; diff --git a/ffmpeg4java-windows/src/main/java/module-info.java b/ffmpeg4java-windows/src/main/java/module-info.java index 8e82f83..baed010 100644 --- a/ffmpeg4java-windows/src/main/java/module-info.java +++ b/ffmpeg4java-windows/src/main/java/module-info.java @@ -1,3 +1,3 @@ -module com.nextbreakpoint.ffmpeg4java.windows { - exports com.nextbreakpoint.ffmpeg4java.windows; +module com.nextbreakpoint.ffmpeg4java { + exports com.nextbreakpoint.ffmpeg4java; } \ No newline at end of file diff --git a/pom.xml b/pom.xml index 239a8ca..20e4698 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ 4.0.0 com.nextbreakpoint com.nextbreakpoint.ffmpeg4java - 7.0.1-1.1 + 7.0.1-1.2 pom FFmpeg4Java FFmpeg4Java provides a Java wrapper of FFmpeg library @@ -273,8 +273,8 @@ windows - ffmpeg4java-windows-test - ffmpeg4java-windows-examples + ffmpeg4java-tests + ffmpeg4java-examples @@ -284,8 +284,8 @@ linux - ffmpeg4java-linux-test - ffmpeg4java-linux-examples + ffmpeg4java-tests + ffmpeg4java-examples @@ -295,8 +295,8 @@ macos - ffmpeg4java-macos-test - ffmpeg4java-macos-examples + ffmpeg4java-tests + ffmpeg4java-examples @@ -366,8 +366,6 @@ ${project.basedir} **/target/${project.artifactId}-${project.version}-x86_64.jar - **/target/${project.artifactId}-${project.version}-x86_64.jar - **/target/${project.artifactId}-${project.version}-x86_64.jar