xbmc / inputstream.ffmpegdirect

Supports streams opened by FFmpeg's libavformat or Kodi's cURL such as plain TS, HLS and DASH (non-DRM) as well as many others. There is support for Archive/Catchup services where there is a replay window and can timeshift across that span. Also provides timeshift for live streams where rewind/pause and fast-forward would not have been available.
GNU General Public License v2.0
57 stars 40 forks source link

Update StreamManager.h #289

Closed Johpin1 closed 2 months ago

Johpin1 commented 3 months ago

During compilation of inputstream.ffmpegdirect-20.3.0-Nexus on Slackware aarch64 I got the error:

/home/john/Downloads/addons/inputstream.ffmpegdirect/src/StreamManager.h:60:16: error: �..virtual void InputStreamFFmpegDirect::SetVideoResolution(int, int)�.. marked �..override�.., but does not override 60 | virtual void SetVideoResolution(int width, int height) override;

=> Solved by removing "override" from line 60 in StreamManager.h

phunkyfish commented 3 months ago

I don’t understand why this change is required. The signature of the method is correct and matches the API.

phunkyfish commented 3 months ago

Here is the API signature:

  //============================================================================
  /// @brief Notify current screen resolution
  ///
  /// @param[in] width Width to set
  /// @param[in] height Height to set
  ///
  virtual void SetVideoResolution(unsigned int width, unsigned int height) {}
  //----------------------------------------------------------------------------

  //============================================================================
  /// @brief Notify current screen resolution and max screen resolution allowed
  ///
  /// @param[in] width Width to set
  /// @param[in] height Height to set
  /// @param[in] maxWidth Max width allowed
  /// @param[in] maxHeight Max height allowed
  ///
  virtual void SetVideoResolution(unsigned int width,
                                  unsigned int height,
                                  unsigned int maxWidth,
                                  unsigned int maxHeight)
  {
  }
phunkyfish commented 3 months ago

The API is identical on both the Nexus and Omega branches.

So I'm not sure where the signature coming from your error is from, with (int, int). That was however the signature from the Matrix branch, where there was a single method with this signature virtual void SetVideoResolution(int width, int height) {}

Is it possible you are compiling against wrong source for xbmc?

Johpin1 commented 3 months ago

I have used: inputstream.ffmpegdirect-20.3.0-Nexus.zip xbmc-20.3-Nexus.zip No Matrix.

Johpin1 commented 3 months ago

As a test I have also tried for Omega: the error does not appear.

Also tested for Matrix => only two errors about missing #include\<cstdint> as mentioned in issue 288, but not the error mentioned in this PR. inputstream.ffmpegdirect-19.3-Matrix.zip xbmc-19.3-Matrix.zip

Build again for 20.3-Nexus, override error still appears.

phunkyfish commented 3 months ago

So why not just use Omega? It will be released in a couple of weeks anyway.

Johpin1 commented 3 months ago

After adapting the code I could built the addon successfully for Nexus. It works.

There is no SlackBuild for Kodi Omega yet. I can do the build according the README from Kodi. The only reason for me could be to check the CEC adapter will be available. For Matrix and Nexus it is missing if you compile on Slackware arm despite of libcec is found during configuring.

phunkyfish commented 3 months ago

Ok, fair. Then I think it’s likely best to stick with the build you have for now. And then switch to Omega once it’s ready.

Johpin1 commented 2 months ago

I decided to try Kodi Omega and build it successfully, also inputstream.ffmpegdirec, inputstream.rtmp and pvr.iptvsimple are fine, only inputstream.adaptive couldn't be compiled:

[ 30%] Building CXX object CMakeFiles/inputstream.adaptive.dir/src/Session.cpp.o /tmp/SBo/inputstream.adaptive-21rc2-Omega/src/Session.cpp: In member function ‘bool SESSION::CSession::ExtractStreamProtectionData(PLAYLIST::CPeriod::PSSHSet&, std::vector<unsigned char>&, std::string)’: /tmp/SBo/inputstream.adaptive-21rc2-Omega/src/Session.cpp:1427:40: error: ‘class AP4_Movie’ has no member named ‘GetPsshAtoms’ 1427 | AP4_Array<AP4_PsshAtom>& pssh{movie->GetPsshAtoms()}; | ^~~~~~~~~~~~ /tmp/SBo/inputstream.adaptive-21rc2-Omega/src/Session.cpp:1427:54: error: invalid initialization of non-const reference of type ‘AP4_Array<AP4_PsshAtom>&’ from an rvalue of type ‘<brace-enclosed initializer list>’ 1427 | AP4_Array<AP4_PsshAtom>& pssh{movie->GetPsshAtoms()}; | ^ make[2]: *** [CMakeFiles/inputstream.adaptive.dir/build.make:118: CMakeFiles/inputstream.adaptive.dir/src/Session.cpp.o] Error 1 make[1]: *** [CMakeFiles/Makefile2:385: CMakeFiles/inputstream.adaptive.dir/all] Error 2 make: *** [Makefile:166: all] Error 2 Do you have any idea?

I will close this PR, because the override error is not valid for Kodi Omega.

phunkyfish commented 2 months ago

Please create an issue on the inputstream.adaptive GitHub for this. They should be able to help. You can also mention me on the issue so I can follow progress.