Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. General and Desktop
  4. Qt Linux ad ffmpeg6
Qt 6.12 LTS is out! See what's new in the release blog

Qt Linux ad ffmpeg6

Scheduled Pinned Locked Moved Solved General and Desktop
18 Posts 6 Posters 2.7k Views 2 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • JonBJ JonB

    @mrdebug

    undefined reference to `avcodec_send_packet(AVCodecContext*, AVPacket const*)`
    

    Since the last parameter ought be const AVPacket *, and (C++ expert correct me if I am wrong) AVPacket const * is not the same thing, I am with @Christian-Ehrlicher: start by searching all your sources and all that you include for avcodec_send_packet() declarations. Any chance it is incorrectly declared in one place?

    JoeCFDJ Offline
    JoeCFDJ Offline
    JoeCFD
    wrote on last edited by
    #9

    @JonB const AVPacket * means: const instance of AVPacket. Only const funcs of class AVPacket can be called.
    AVPacket const * means: this is a constant pointer and its address can be changed.

    Two different things.

    mrdebugM JonBJ 2 Replies Last reply
    0
    • JoeCFDJ JoeCFD

      @JonB const AVPacket * means: const instance of AVPacket. Only const funcs of class AVPacket can be called.
      AVPacket const * means: this is a constant pointer and its address can be changed.

      Two different things.

      mrdebugM Offline
      mrdebugM Offline
      mrdebug
      wrote on last edited by
      #10

      The code is good because executing "make examples", the example from I have copied out the functions waw been compiled. I think the problem is related to some switch to add at the .pro file.

      Need programmers to hire?
      www.labcsp.com
      www.denisgottardello.it
      GMT+1
      Skype: mrdebug

      JoeCFDJ 1 Reply Last reply
      0
      • mrdebugM mrdebug

        The code is good because executing "make examples", the example from I have copied out the functions waw been compiled. I think the problem is related to some switch to add at the .pro file.

        JoeCFDJ Offline
        JoeCFDJ Offline
        JoeCFD
        wrote on last edited by JoeCFD
        #11

        @mrdebug the order of the libs matters. Change the order of static libs in the pro file.

        JonBJ 1 Reply Last reply
        0
        • JoeCFDJ JoeCFD

          @JonB const AVPacket * means: const instance of AVPacket. Only const funcs of class AVPacket can be called.
          AVPacket const * means: this is a constant pointer and its address can be changed.

          Two different things.

          JonBJ Offline
          JonBJ Offline
          JonB
          wrote on last edited by
          #12

          @JoeCFD said in Qt Linux ad ffmpeg6:

          Two different things.

          I know. And the error message AVPacket const* does not match what it should be, which is const AVPacket *. Which make sit look like there is a declaration and call to AVPacket const* erroneously somewhere.

          1 Reply Last reply
          0
          • JoeCFDJ JoeCFD

            @mrdebug the order of the libs matters. Change the order of static libs in the pro file.

            JonBJ Offline
            JonBJ Offline
            JonB
            wrote on last edited by
            #13

            @JoeCFD said in Qt Linux ad ffmpeg6:

            @mrdebug the order of the libs matters. Change the order of static libs in the pro file.

            This is a good point. @mrdebug: do you call avcodec_send_packet() from your own code (e.g. main.cpp)? Because if not, and its internal, and you put libavcodec.a as the first library, and only a later library calls that function, it may not have been included. Do you get that order/list of linking the libraries from some documentation?

            I haven't got this type of error using the old version 4.2.2.

            Hmm ;-)

            mrdebugM 1 Reply Last reply
            0
            • JonBJ JonB

              @JoeCFD said in Qt Linux ad ffmpeg6:

              @mrdebug the order of the libs matters. Change the order of static libs in the pro file.

              This is a good point. @mrdebug: do you call avcodec_send_packet() from your own code (e.g. main.cpp)? Because if not, and its internal, and you put libavcodec.a as the first library, and only a later library calls that function, it may not have been included. Do you get that order/list of linking the libraries from some documentation?

              I haven't got this type of error using the old version 4.2.2.

              Hmm ;-)

              mrdebugM Offline
              mrdebugM Offline
              mrdebug
              wrote on last edited by
              #14

              @JonB Hi, I have tried to edit the libraries order without any effect.
              Now code is:

              #include <libavutil/frame.h>
              #include <libavutil/mem.h>
              #include <libavcodec/avcodec.h>
              
              int main(int argc, char *argv[])
              {
                  AVCodecContext *dec_ctx;
                  AVPacket *pkt;
                  avcodec_send_packet(dec_ctx, pkt);
                  return 0;
              }
              

              and the .pro file is the one above. The error is the same:

              /home/denis/Cpp/ffmpegTest/ffmpegTest/main.cpp:25: error: undefined reference to `avcodec_send_packet(AVCodecContext*, AVPacket const*)'
              

              and to include only the library (libavcodec.a) that contains the function does not resolve.

              Need programmers to hire?
              www.labcsp.com
              www.denisgottardello.it
              GMT+1
              Skype: mrdebug

              JoeCFDJ SGaistS 2 Replies Last reply
              0
              • mrdebugM mrdebug

                @JonB Hi, I have tried to edit the libraries order without any effect.
                Now code is:

                #include <libavutil/frame.h>
                #include <libavutil/mem.h>
                #include <libavcodec/avcodec.h>
                
                int main(int argc, char *argv[])
                {
                    AVCodecContext *dec_ctx;
                    AVPacket *pkt;
                    avcodec_send_packet(dec_ctx, pkt);
                    return 0;
                }
                

                and the .pro file is the one above. The error is the same:

                /home/denis/Cpp/ffmpegTest/ffmpegTest/main.cpp:25: error: undefined reference to `avcodec_send_packet(AVCodecContext*, AVPacket const*)'
                

                and to include only the library (libavcodec.a) that contains the function does not resolve.

                JoeCFDJ Offline
                JoeCFDJ Offline
                JoeCFD
                wrote on last edited by
                #15

                @mrdebug
                Try the following

                int main(int argc, char *argv[])
                {
                    AVCodecContext *dec_ctx{};
                    const AVPacket *pkt{};
                    avcodec_send_packet(dec_ctx, pkt);
                    return 0;
                }
                

                or

                int main(int argc, char *argv[])
                {
                    AVCodecContext *dec_ctx{};
                    AVPacket * const pkt{};
                    avcodec_send_packet(dec_ctx, pkt);
                    return 0;
                }
                
                mrdebugM 1 Reply Last reply
                0
                • mrdebugM mrdebug

                  @JonB Hi, I have tried to edit the libraries order without any effect.
                  Now code is:

                  #include <libavutil/frame.h>
                  #include <libavutil/mem.h>
                  #include <libavcodec/avcodec.h>
                  
                  int main(int argc, char *argv[])
                  {
                      AVCodecContext *dec_ctx;
                      AVPacket *pkt;
                      avcodec_send_packet(dec_ctx, pkt);
                      return 0;
                  }
                  

                  and the .pro file is the one above. The error is the same:

                  /home/denis/Cpp/ffmpegTest/ffmpegTest/main.cpp:25: error: undefined reference to `avcodec_send_packet(AVCodecContext*, AVPacket const*)'
                  

                  and to include only the library (libavcodec.a) that contains the function does not resolve.

                  SGaistS Offline
                  SGaistS Offline
                  SGaist
                  Lifetime Qt Champion
                  wrote on last edited by
                  #16

                  @mrdebug hi,

                  Can you show the .pro file of your minimal project ?
                  Are you sure you are linking to the expected version of ffmpeg ?
                  Do you have your distribution provided ffmpeg development packages installed ?

                  Interested in AI ? www.idiap.ch
                  Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

                  1 Reply Last reply
                  0
                  • JoeCFDJ JoeCFD

                    @mrdebug
                    Try the following

                    int main(int argc, char *argv[])
                    {
                        AVCodecContext *dec_ctx{};
                        const AVPacket *pkt{};
                        avcodec_send_packet(dec_ctx, pkt);
                        return 0;
                    }
                    

                    or

                    int main(int argc, char *argv[])
                    {
                        AVCodecContext *dec_ctx{};
                        AVPacket * const pkt{};
                        avcodec_send_packet(dec_ctx, pkt);
                        return 0;
                    }
                    
                    mrdebugM Offline
                    mrdebugM Offline
                    mrdebug
                    wrote on last edited by
                    #17

                    @JoeCFD Tried both. The behaviour is the same.
                    Tomorrow I'll try on a Mac and Windows

                    Need programmers to hire?
                    www.labcsp.com
                    www.denisgottardello.it
                    GMT+1
                    Skype: mrdebug

                    mrdebugM 1 Reply Last reply
                    0
                    • mrdebugM mrdebug

                      @JoeCFD Tried both. The behaviour is the same.
                      Tomorrow I'll try on a Mac and Windows

                      mrdebugM Offline
                      mrdebugM Offline
                      mrdebug
                      wrote on last edited by
                      #18

                      Hi, in order to use ffmpeg 6 libraries in a custom software it is mandatory to compile the source using this swich "--enable-pic"
                      and include the header in this way:

                      extern "C" {
                          #include <libavutil/frame.h>
                          #include <libavutil/mem.h>
                          #include <libavcodec/avcodec.h>
                      }
                      

                      Need programmers to hire?
                      www.labcsp.com
                      www.denisgottardello.it
                      GMT+1
                      Skype: mrdebug

                      1 Reply Last reply
                      0
                      • mrdebugM mrdebug has marked this topic as solved on

                      • Login

                      • Login or register to search.
                      • First post
                        Last post
                      0
                      • Categories
                      • Recent
                      • Tags
                      • Popular
                      • Users
                      • Groups
                      • Search
                      • Get Qt
                      • Unsolved