Du kannst nicht mehr als 25 Themen auswählen Themen müssen entweder mit einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.

84 Zeilen
2.5 KiB

  1. using BenchmarkDotNet.Attributes;
  2. using BenchmarkDotNet.Configs;
  3. using BenchmarkDotNet.Environments;
  4. using BenchmarkDotNet.Jobs;
  5. using BenchmarkDotNet.Toolchains.CsProj;
  6. using JT1078.Flv.H264;
  7. using JT1078.Flv.MessagePack;
  8. using JT1078.Protocol;
  9. using JT808.Protocol.Extensions;
  10. using System;
  11. using System.Collections.Generic;
  12. using System.IO;
  13. using System.Linq;
  14. namespace JT1078.Flv.Benchmark
  15. {
  16. [Config(typeof(JT1078FlvEncoderConfig))]
  17. [MarkdownExporterAttribute.GitHub]
  18. [MemoryDiagnoser]
  19. public class JT1078FlvEncoderContext
  20. {
  21. JT1078Package Package;
  22. List<H264NALU> H264NALUs;
  23. H264NALU SPSNALu;
  24. H264Decoder h264Decoder = new H264Decoder();
  25. FlvEncoder flvEncoder = new FlvEncoder();
  26. [Params(100, 10000, 100000)]
  27. public int N;
  28. [GlobalSetup]
  29. public void Setup()
  30. {
  31. var lines = File.ReadAllLines(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "JT1078_1.txt"));
  32. foreach (var line in lines)
  33. {
  34. var data = line.Split(',');
  35. var bytes = data[6].ToHexBytes();
  36. JT1078Package package = JT1078Serializer.Deserialize(bytes);
  37. Package = JT1078Serializer.Merge(package);
  38. }
  39. H264NALUs = h264Decoder.ParseNALU(Package);
  40. SPSNALu = H264NALUs.FirstOrDefault(f => f.NALUHeader.NalUnitType == 7);
  41. SPSNALu.RawData = h264Decoder.DiscardEmulationPreventionBytes(SPSNALu.RawData);
  42. }
  43. [Benchmark(Description = "EXPGolombReader")]
  44. public void EXPGolombReaderTest()
  45. {
  46. for (var i = 0; i < N; i++)
  47. {
  48. ExpGolombReader h264GolombReader = new ExpGolombReader(SPSNALu.RawData);
  49. h264GolombReader.ReadSPS();
  50. }
  51. }
  52. [Benchmark(Description = "H264Decoder")]
  53. public void H264Decoder()
  54. {
  55. for (var i = 0; i < N; i++)
  56. {
  57. var nalus = h264Decoder.ParseNALU(Package);
  58. }
  59. }
  60. [Benchmark(Description = "FlvEncoder")]
  61. public void FlvEncoder()
  62. {
  63. for(var i=0;i< N;i++)
  64. {
  65. var contents = flvEncoder.CreateFlvFrame(H264NALUs);
  66. }
  67. }
  68. }
  69. public class JT1078FlvEncoderConfig : ManualConfig
  70. {
  71. public JT1078FlvEncoderConfig()
  72. {
  73. Add(Job.Default.WithGcServer(false).With(CsProjCoreToolchain.NetCoreApp30).With(Platform.AnyCpu));
  74. }
  75. }
  76. }