Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.

10 місяці тому
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. #include "flv-writer.h"
  2. #include "flv-muxer.h"
  3. #include "aom-av1.h"
  4. #include <stdio.h>
  5. #include <stdlib.h>
  6. #include <string.h>
  7. #include <assert.h>
  8. struct av1_raw_t
  9. {
  10. flv_muxer_t* flv;
  11. uint32_t pts, dts;
  12. const uint8_t* ptr;
  13. int vcl;
  14. };
  15. static int on_flv_packet(void* flv, int type, const void* data, size_t bytes, uint32_t timestamp)
  16. {
  17. return flv_writer_input(flv, type, data, bytes, timestamp);
  18. }
  19. void av1toflv_test(const char* obu, const char* outputFLV)
  20. {
  21. struct av1_raw_t ctx;
  22. memset(&ctx, 0, sizeof(ctx));
  23. void* f = flv_writer_create(outputFLV);
  24. ctx.flv = flv_muxer_create(on_flv_packet, f);
  25. FILE* fp = fopen(obu, "rb");
  26. static uint8_t buffer[4 * 1024 * 1024];
  27. while (1)
  28. {
  29. uint8_t ptr[2];
  30. if(sizeof(ptr) != fread(ptr, 1, sizeof(ptr), fp))
  31. break;
  32. size_t len = (ptr[0] << 8) | ptr[1];
  33. assert(len <= sizeof(buffer));
  34. if (len != fread(buffer, 1, len, fp))
  35. break;
  36. flv_muxer_av1(ctx.flv, buffer, len, ctx.pts, ctx.dts);
  37. ctx.pts += 40;
  38. ctx.dts += 40;
  39. }
  40. fclose(fp);
  41. flv_muxer_destroy(ctx.flv);
  42. flv_writer_destroy(f);
  43. }