Checklist of things to do during release 3.0

Here's a list to track the things we can do during the next release for our public headers. Not all of them are of the same priority.

Things that can only be done when during a major version change:

EbSvtAv1Enc.h

  • Replace Bool with the standard bool type from stdbool.h.
  • Reset the padding size and reevaluate certain flags:
    • high_dynamic_range_input and the associated --enable-hdr.
    • tier and associated --tier (I'm not sure if the flag is actually used in the output file). --tier has been removed
    • color_description_present_flag.
    • Determine if rate_control_mode still needs to be uint32_t or can we use enum SvtAv1RcMode for it.
    • Fully remove vbv_bufsize.
    • Fully remove vbr_bias_pct.
    • Can't really tell if the way we “copy” rc_stats_buffer into the API is appropriate or not, since I also cannot tell where it's being free'd found the free'ing portion in enc_app_dctor(). Might no longer be an issue assuming that application will always clean up the struct since it's noted that the struct does not own the data.
    • Fully remove pred_struct and related fields

EbSvtAv1.h

  • Check the fields of EbSvtIOFormat to see if they are used. I could not find any references to using org_x, org_y, color_fmt, and bit_depth.
  • Determine what p_application_private does in EbComponentType and if it's still needed.
  • Add a field in EbBufferHeaderType to signal the temporal layer of the picture outputted.
  • output average qp per frame vs the frame qp assignment.

Things that are nice to haves, and can be done at any time/version:

  • Check OPT_LD_LATENCY2 macro.
  • Look for other instances of SVT_AV1_CHECK_VERSION
  • Check if EbOperatingParametersInfo is used in the encoder or only in the unit tests. (this extends to the fields within EbAV1OperatingPoint) Only used in the unit test, but it's still part of the av1 spec and helps with debugging.
  • Check the fields of EbColorConfig Similar thing with the above where a few of the fields are unit-test only, but there for debugging purposes
  • Also check if EbTimingInfo is needed by the encoder. This typedef can be moved outside the API file, since it's not used publically.
  • Potentially make the EB_CPU_FLAGS_* macros exposed on all arches, as we don't actually have a signal or anything in the pkg-config file or debugmacros header to add -DARCH_X86_64 or -DARCH_AARCH64 from what I could tell. So this resulted in none of the flags actually being present to the end user. This also means we should consider making our public api headers mostly config agnostic (so try not to rely on things like ARCH_X86_64 being defined unless it's in the EbDebugMacros.h file). Perhaps this is fine and we should have end-users always use svt_av1_enc_parse_parameter() with "asm".
  • Check if EbSvtAv1ExtFrameBuf.h is used.
  • Remove NO_ENCDEC
  • Remove REMOVE_LP1_LPN_DIFF
  • Check if there's a better way to do what CHECK_REPORT_ERROR does, instead of just an infinite loop.

These are a few of the things I found that can be done in any order I believe.

Edited by Christopher Degawa