* [FFmpeg-devel] ffmpeg.git test compile fail
@ 2025-04-09 11:49 Andrew Randrianasulu
2025-04-09 11:54 ` James Almer
2025-04-09 14:33 ` Andrew Randrianasulu
0 siblings, 2 replies; 3+ messages in thread
From: Andrew Randrianasulu @ 2025-04-09 11:49 UTC (permalink / raw)
To: Cinelerra.GG, FFmpeg development discussions and patches
ffmpeg shallow git copy
commit 890b8da1ce27fd365eaffefc7efcbadae9f01f2a
our patches 2 and 8 fail, but this is not really my point yet ....
ffmpeg.C:313:42: error: 'avcodec_close' was not declared in this scope; did
you mean 'avio_close'?
ffmpeg.C:476:33: error: 'avcodec_close' was not declared in this scope; did
you mean 'avio_close'?
ffmpeg.C:1307:37: error: 'AVFrame' {aka 'struct AVFrame'} has no member
named 'interlaced_frame'
ffmpeg.C:1309:37: error: 'AVFrame' {aka 'struct AVFrame'} has no member
named 'interlaced_frame'
ffmpeg.C:1309:66: error: 'AVFrame' {aka 'struct AVFrame'} has no member
named 'top_field_first'
ffmpeg.C:1311:37: error: 'AVFrame' {aka 'struct AVFrame'} has no member
named 'interlaced_frame'
ffmpeg.C:1311:67: error: 'AVFrame' {aka 'struct AVFrame'} has no member
named 'top_field_first'
ffmpeg.C:1340:36: error: 'AVFrame' {aka 'struct AVFrame'} has no member
named 'key_frame'
ffmpeg.C:1512:24: error: 'AVFrame' {aka 'struct AVFrame'} has no member
named 'interlaced_frame'
ffmpeg.C:1513:24: error: 'AVFrame' {aka 'struct AVFrame'} has no member
named 'top_field_first'
ffmpeg.C:3847:29: error: 'av_stream_get_side_data' was not declared in this
scope; did you mean 'av_frame_get_side_data'?
mplayer switched for now to branch 7.1 until it get updates.
i see in doc/APIchanges
2023-05-04 - 0fc9c1f6828 - lavu 58.7.100 - frame.h
Deprecate AVFrame.interlaced_frame,
AVFrame.top_field_first, and
AVFrame.key_frame.
Add AV_FRAME_FLAG_INTERLACED, AV_FRAME_FLAG_TOP_FIELD_FIRST, and
AV_FRAME_FLAG_KEY flags as replacement.
but not sure how to use them yet.
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [FFmpeg-devel] ffmpeg.git test compile fail
2025-04-09 11:49 [FFmpeg-devel] ffmpeg.git test compile fail Andrew Randrianasulu
@ 2025-04-09 11:54 ` James Almer
2025-04-09 14:33 ` Andrew Randrianasulu
1 sibling, 0 replies; 3+ messages in thread
From: James Almer @ 2025-04-09 11:54 UTC (permalink / raw)
To: ffmpeg-devel
[-- Attachment #1.1.1: Type: text/plain, Size: 2027 bytes --]
On 4/9/2025 8:49 AM, Andrew Randrianasulu wrote:
> ffmpeg shallow git copy
>
> commit 890b8da1ce27fd365eaffefc7efcbadae9f01f2a
>
> our patches 2 and 8 fail, but this is not really my point yet ....
>
>
> ffmpeg.C:313:42: error: 'avcodec_close' was not declared in this scope; did
> you mean 'avio_close'?
> ffmpeg.C:476:33: error: 'avcodec_close' was not declared in this scope; did
> you mean 'avio_close'?
> ffmpeg.C:1307:37: error: 'AVFrame' {aka 'struct AVFrame'} has no member
> named 'interlaced_frame'
> ffmpeg.C:1309:37: error: 'AVFrame' {aka 'struct AVFrame'} has no member
> named 'interlaced_frame'
> ffmpeg.C:1309:66: error: 'AVFrame' {aka 'struct AVFrame'} has no member
> named 'top_field_first'
> ffmpeg.C:1311:37: error: 'AVFrame' {aka 'struct AVFrame'} has no member
> named 'interlaced_frame'
> ffmpeg.C:1311:67: error: 'AVFrame' {aka 'struct AVFrame'} has no member
> named 'top_field_first'
> ffmpeg.C:1340:36: error: 'AVFrame' {aka 'struct AVFrame'} has no member
> named 'key_frame'
> ffmpeg.C:1512:24: error: 'AVFrame' {aka 'struct AVFrame'} has no member
> named 'interlaced_frame'
> ffmpeg.C:1513:24: error: 'AVFrame' {aka 'struct AVFrame'} has no member
> named 'top_field_first'
> ffmpeg.C:3847:29: error: 'av_stream_get_side_data' was not declared in this
> scope; did you mean 'av_frame_get_side_data'?
>
> mplayer switched for now to branch 7.1 until it get updates.
>
> i see in doc/APIchanges
>
>
> 2023-05-04 - 0fc9c1f6828 - lavu 58.7.100 - frame.h
> Deprecate AVFrame.interlaced_frame,
> AVFrame.top_field_first, and
> AVFrame.key_frame.
> Add AV_FRAME_FLAG_INTERLACED, AV_FRAME_FLAG_TOP_FIELD_FIRST, and
> AV_FRAME_FLAG_KEY flags as replacement.
>
> but not sure how to use them yet.
Those are flags. You need to check AVFrame->flags to see if they are set.
See
https://code.videolan.org/videolan/x264/-/merge_requests/173/diffs?commit_id=32c3b801191522961102d4bea292cdb61068d0dd
for an example.
[-- Attachment #1.2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 495 bytes --]
[-- Attachment #2: Type: text/plain, Size: 251 bytes --]
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [FFmpeg-devel] ffmpeg.git test compile fail
2025-04-09 11:49 [FFmpeg-devel] ffmpeg.git test compile fail Andrew Randrianasulu
2025-04-09 11:54 ` James Almer
@ 2025-04-09 14:33 ` Andrew Randrianasulu
1 sibling, 0 replies; 3+ messages in thread
From: Andrew Randrianasulu @ 2025-04-09 14:33 UTC (permalink / raw)
To: Cinelerra.GG, FFmpeg development discussions and patches
[-- Attachment #1: Type: text/plain, Size: 2562 bytes --]
I think exact conditionals should be more like 61.0.100
but for single test it worked ...
for some reason our x264 failed to encode (segfault) on i686 with AVX ?
but x265 worked ....
this is not yet for commiting, but more like for testing with ffmpeg git.
cc: ffmpeg-devel in case they have better suggestions on fixing our code
for upcoming ffmpeg.
cingg git URL: git://git.cinelerra-gg.org/goodguy/cinelerra
run ./autogen.sh
configure:
./configure --with-git-ffmpeg=https://git.ffmpeg.org/ffmpeg.git
--with-single-user
rm thirdparty/src/ffmpeg.git.patch2
rm thirdparty/src/ffmpeg.git.patch8
make
make install
run from build directory
bin/cin (with DISPLAY variable set)
ср, 9 апр. 2025 г., 14:49 Andrew Randrianasulu <randrianasulu@gmail.com>:
>
> ffmpeg shallow git copy
>
> commit 890b8da1ce27fd365eaffefc7efcbadae9f01f2a
>
> our patches 2 and 8 fail, but this is not really my point yet ....
>
>
> ffmpeg.C:313:42: error: 'avcodec_close' was not declared in this scope;
> did you mean 'avio_close'?
> ffmpeg.C:476:33: error: 'avcodec_close' was not declared in this scope;
> did you mean 'avio_close'?
> ffmpeg.C:1307:37: error: 'AVFrame' {aka 'struct AVFrame'} has no member
> named 'interlaced_frame'
> ffmpeg.C:1309:37: error: 'AVFrame' {aka 'struct AVFrame'} has no member
> named 'interlaced_frame'
> ffmpeg.C:1309:66: error: 'AVFrame' {aka 'struct AVFrame'} has no member
> named 'top_field_first'
> ffmpeg.C:1311:37: error: 'AVFrame' {aka 'struct AVFrame'} has no member
> named 'interlaced_frame'
> ffmpeg.C:1311:67: error: 'AVFrame' {aka 'struct AVFrame'} has no member
> named 'top_field_first'
> ffmpeg.C:1340:36: error: 'AVFrame' {aka 'struct AVFrame'} has no member
> named 'key_frame'
> ffmpeg.C:1512:24: error: 'AVFrame' {aka 'struct AVFrame'} has no member
> named 'interlaced_frame'
> ffmpeg.C:1513:24: error: 'AVFrame' {aka 'struct AVFrame'} has no member
> named 'top_field_first'
> ffmpeg.C:3847:29: error: 'av_stream_get_side_data' was not declared in
> this scope; did you mean 'av_frame_get_side_data'?
>
> mplayer switched for now to branch 7.1 until it get updates.
>
> i see in doc/APIchanges
>
>
> 2023-05-04 - 0fc9c1f6828 - lavu 58.7.100 - frame.h
> Deprecate AVFrame.interlaced_frame,
> AVFrame.top_field_first, and
> AVFrame.key_frame.
> Add AV_FRAME_FLAG_INTERLACED, AV_FRAME_FLAG_TOP_FIELD_FIRST, and
> AV_FRAME_FLAG_KEY flags as replacement.
>
> but not sure how to use them yet.
>
[-- Attachment #2: ffmpeg_8.diff --]
[-- Type: text/plain, Size: 5308 bytes --]
diff --git a/cinelerra-5.1/cinelerra/bdwrite.C b/cinelerra-5.1/cinelerra/bdwrite.C
index 1f7f027e..1b027a7f 100644
--- a/cinelerra-5.1/cinelerra/bdwrite.C
+++ b/cinelerra-5.1/cinelerra/bdwrite.C
@@ -2586,7 +2586,11 @@ static int field_probe(AVFormatContext *fmt_ctx, AVStream *st)
}
ret = avcodec_receive_frame(ctx, ipic);
if( ret >= 0 ) {
+#if LIBAVCODEC_VERSION_INT <= AV_VERSION_INT(59,16,100)
ilaced = ipic->interlaced_frame ? 1 : 0;
+#else
+ ilaced = ipic->flags & AV_FRAME_FLAG_INTERLACED ? 1 : 0;
+#endif
break;
}
if( ret != AVERROR(EAGAIN) )
@@ -2769,7 +2773,9 @@ int media_info::scan()
ret = scan(fmt_ctx);
for( int i=0; i<(int)streams.size(); ++i )
+#if LIBAVCODEC_VERSION_INT <= AV_VERSION_INT(59,16,100)
avcodec_close(streams[i]->ctx);
+#endif
avformat_close_input(&fmt_ctx);
return ret;
diff --git a/cinelerra-5.1/cinelerra/ffmpeg.C b/cinelerra-5.1/cinelerra/ffmpeg.C
index 075ef4dd..8aee2c2a 100644
--- a/cinelerra-5.1/cinelerra/ffmpeg.C
+++ b/cinelerra-5.1/cinelerra/ffmpeg.C
@@ -310,7 +310,9 @@ FFStream::FFStream(FFMPEG *ffmpeg, AVStream *st, int fidx)
FFStream::~FFStream()
{
frm_lock->lock("FFStream::~FFStream");
+#if LIBAVCODEC_VERSION_INT <= AV_VERSION_INT(59,16,100)
if( reading > 0 || writing > 0 ) avcodec_close(avctx);
+#endif
if( avctx ) avcodec_free_context(&avctx);
if( fmt_ctx ) avformat_close_input(&fmt_ctx);
if( hw_device_ctx ) av_buffer_unref(&hw_device_ctx);
@@ -473,7 +475,9 @@ int FFStream::decode_activate()
if( ret < 0 && hw_type != AV_HWDEVICE_TYPE_NONE ) {
ff_err(ret, "HW device init failed, using SW decode.\nfile:%s\n",
ffmpeg->fmt_ctx->url);
+#if LIBAVCODEC_VERSION_INT <= AV_VERSION_INT(59,16,100)
avcodec_close(avctx);
+#endif
avcodec_free_context(&avctx);
av_buffer_unref(&hw_device_ctx);
hw_device_ctx = 0;
@@ -1303,7 +1307,7 @@ int FFVideoStream::probe(int64_t pos)
if( ret > 0 ) {
//printf("codec interlace: %i \n",frame->interlaced_frame);
//printf("codec tff: %i \n",frame->top_field_first);
-
+#if LIBAVCODEC_VERSION_INT <= AV_VERSION_INT(59,16,100)
if (!frame->interlaced_frame)
ffmpeg->interlace_from_codec = AV_FIELD_PROGRESSIVE;
if ((frame->interlaced_frame) && (frame->top_field_first))
@@ -1311,7 +1315,14 @@ int FFVideoStream::probe(int64_t pos)
if ((frame->interlaced_frame) && (!frame->top_field_first))
ffmpeg->interlace_from_codec = AV_FIELD_BB;
//printf("Interlace mode from codec: %i\n", ffmpeg->interlace_from_codec);
-
+#esle
+ if (!frame->flags & AV_FRAME_FLAG_TOP_FIELD_FIRST)
+ ffmpeg->interlace_from_codec = AV_FIELD_PROGRESSIVE;
+ if ((frame->flags & AV_FRAME_FLAG_INTERLACED) && (frame->flags & AV_FRAME_FLAG_TOP_FIELD_FIRST))
+ ffmpeg->interlace_from_codec = AV_FIELD_TT;
+ if ((frame->flags & AV_FRAME_FLAG_INTERLACED ) && (!frame->flags & AV_FRAME_FLAG_TOP_FIELD_FIRST))
+ ffmpeg->interlace_from_codec = AV_FIELD_BB;
+#endif
}
if( frame->format == AV_PIX_FMT_NONE || frame->width <= 0 || frame->height <= 0 )
@@ -1337,7 +1348,11 @@ int FFVideoStream::load(VFrame *vframe, int64_t pos)
while( ret>=0 && !flushed && curr_pos<=pos && --i>=0 ) {
ret = read_frame(frame);
if( ret > 0 ) {
+#if LIBAVCODEC_VERSION_INT <= AV_VERSION_INT(59,16,100)
if( frame->key_frame && seeking < 0 ) {
+#else
+ if( (frame->flags & AV_FRAME_FLAG_KEY) && seeking < 0 ) {
+#endif
int use_cache = ffmpeg->get_use_cache();
if( use_cache < 0 ) {
// for reverse read, reload file frame_cache from keyframe to pos
@@ -1509,8 +1524,15 @@ int FFVideoStream::drain()
int FFVideoStream::encode_frame(AVFrame *frame)
{
if( frame ) {
+#if LIBAVCODEC_VERSION_INT <= AV_VERSION_INT(59,16,100)
frame->interlaced_frame = interlaced;
frame->top_field_first = top_field_first;
+#else
+ if(top_field_first)
+ frame->flags |= AV_FRAME_FLAG_TOP_FIELD_FIRST;
+ if(interlaced)
+ frame->flags |= AV_FRAME_FLAG_INTERLACED;
+#endif
}
if( frame && frame->format == AV_PIX_FMT_VAAPI ) { // ugly
int ret = avcodec_send_frame(avctx, frame);
@@ -3844,7 +3866,20 @@ double FFVideoStream::get_rotation_angle()
#else
int size = 0;
#endif
+
+#if LIBAVCODEC_VERSION_INT <= AV_VERSION_INT(59,16,100)
int *matrix = (int*)av_stream_get_side_data(st, AV_PKT_DATA_DISPLAYMATRIX, &size);
+#else
+ int32_t *matrix = NULL;
+ if (!matrix) {
+ const AVPacketSideData *psd = av_packet_side_data_get(st->codecpar->coded_side_data,
+ st->codecpar->nb_coded_side_data,
+ AV_PKT_DATA_DISPLAYMATRIX);
+ if (psd)
+ matrix = (int32_t *)psd->data;
+ }
+
+#endif
int len = size/sizeof(*matrix);
if( !matrix || len < 5 ) return 0;
const double s = 1/65536.;
diff --git a/cinelerra-5.1/cinelerra/fileac3.C b/cinelerra-5.1/cinelerra/fileac3.C
index 63654f32..34469aef 100644
--- a/cinelerra-5.1/cinelerra/fileac3.C
+++ b/cinelerra-5.1/cinelerra/fileac3.C
@@ -191,7 +191,9 @@ int FileAC3::close_file()
if(codec_context)
{
encode_flush();
+#if LIBAVCODEC_VERSION_INT <= AV_VERSION_INT(59,16,100)
avcodec_close(codec_context);
+#endif
avcodec_free_context(&codec_context);
codec = 0;
}
[-- Attachment #3: Type: text/plain, Size: 251 bytes --]
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2025-04-09 14:34 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2025-04-09 11:49 [FFmpeg-devel] ffmpeg.git test compile fail Andrew Randrianasulu
2025-04-09 11:54 ` James Almer
2025-04-09 14:33 ` Andrew Randrianasulu
Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
This inbox may be cloned and mirrored by anyone:
git clone --mirror https://master.gitmailbox.com/ffmpegdev/0 ffmpegdev/git/0.git
# If you have public-inbox 1.1+ installed, you may
# initialize and index your mirror using the following commands:
public-inbox-init -V2 ffmpegdev ffmpegdev/ https://master.gitmailbox.com/ffmpegdev \
ffmpegdev@gitmailbox.com
public-inbox-index ffmpegdev
Example config snippet for mirrors.
AGPL code for this site: git clone https://public-inbox.org/public-inbox.git