SPARKLE Intel Arc A310 ELF Graphics Card Goes Good!

I had a 2080ti that I used to game on, but I hadn't been using it for a while, so I gave it to my nephew. Then I took a gamble on a SPARKLE Intel Arc A310 ELF. For just doing desktop stuff, it sounded good. It's got lots of connectors, powers itself from the PCI-E slot, and has all the latest hardware video accelerators including AV1 - plus a decent price. Just now I put the hardware encoder through some tests, and it went well!

So I've got a bunch of home movie files that I ripped way back, and they are encoded losslessly with FFV1, which means the file sizes are huge. That's okay for my offline-storage, but I wanted to reduce the file-size for my daily-drive (just a 2tb portable). So I picked a test file that was ~59 seconds long, and ~144MB (144579kb). Like I said, it's "25i" PAL video capture. ffprobe reports it as ffv1 (FFV1 / 0x31564646), yuv420p(tv, bt470bg/unknown/unknown, top coded first (swapped)), 720x576, 25 fps...

So as you can see in the logs below, I tested the hardware h264 encoder first, and tried a bunch of options that were reported via ffmpeg -h encoder=h264_qsv, but it seems many of them did nothing (maybe because I was rendering non-HD video at near-lossless quality - so there maybe wasn't much to "optimise"). Then I tried the hevc(h265) HW encoder, and then the av1 HW encoder. Then I was asking chat-gpt about making the files "snappier", hence I did some stuff with keyframes. It also told me I should be deinterlacing, which I tested at the end.

At the same time I was testing the first 8 seconds of each video with this "video quality prediction model" I found: https://github.com/Telecommunication-Telemedia-Assessment/bi…

… gives the quality of the video sequence on a mean opinion score (MOS) scale between 1 and 5, where 1 corresponds to bad and 5 corresponds to excellent.

TLDR for deinterlaced 50fps video: {-vf yadif=1}

  • "Reference quality" with software encoder, {-c:v libx264 -crf 1} transcoded at 240fps, filesize 220MB, quality = 3.40.
    (FYI, I have a 5950x, but I used ffmpeg defaults, so I don't know if it used the CPU "fully")
  • With "lossless" HW H264, {-c:v h264_qsv -global_quality 1} transcoded at 740fps, filesize 59MB, quality = 3.17.
  • With "near-lossless" HW H264, {-c:v h264_qsv -global_quality 16} transcoded at 725fps, filesize 33MB, quality = 3.15.
  • With "lossless" HW AV1, {-c:v av1_qsv -global_quality 1} transcoded at 690fps, filesize 32MB, quality = 3.34.

So I went with the AV1 encoder because it is very fast, has much improved compression, and only a small "quality" loss. When I ran it all the files, the GPU chugged along at 70% usage, pulled ~20watts, and sat at about 55C. And at the end of it all, it had turned 192GB of lossless 25i in to 46GB of near-lossless 50p video. A great result in my opinion!


# libx264 = software h264 encoder. libx265 = SW h265 aka HEVC.
# ??_qsv = ["Intel Quick Sync Video"](https://trac.ffmpeg.org/wiki/Hardware/QuickSync) HW encoders

libx264--crf_0,preset_slow,tune_grain                 fps=175  Lsize= 155,675KiB
libx264--crf_0,preset_slow                            fps=191  Lsize= 155,675KiB  ~  qual = 2.879366373285043
libx264--crf_0,preset_veryslow                        fps= 76  Lsize= 155,633KiB  ~  qual = 2.879174524776416
libx264--qp_0,preset_slow                             fps=190  Lsize= 155,675KiB
libx264rgb--crf_0,preset_slow                         fps= 93  Lsize= 424,024KiB

libx265--preset_slow,lossless_1,keyint_1              fps= 49  Lsize= 195,179KiB
libx265--preset_slow,lossless_1                       fps= 40  Lsize= 208,084KiB
libx265--preset_medium,lossless_1,keyint_1            fps= 55  Lsize= 195,216KiB
libx265--preset_faster,lossless_1,keyint_1            fps= 59  Lsize= 195,275KiB

x264_qsv--defaults                                    fps=610  Lsize=   8,736KiB  ~  qual = 2.1937952301291945
x264_qsv--q_25                                        fps=639  Lsize=   9,350KiB  ~  qual = 2.260815135784002
x264_qsv--q_31                                        fps=583  Lsize=   7,141KiB  ~  qual = 1.5984725593807805
x264_qsv--q_2                                         fps=535  Lsize=  71,865KiB  ~  qual = 2.9371376463359278
x264_qsv--global_qual_2                               fps=579  Lsize=  46,476KiB  ~  qual = 2.8877787816043936
x264_qsv--global_qual_25                              fps=622  Lsize=  10,976KiB  ~  qual = 2.494614096232868
x264_qsv--global_qual_25,look_ahead_1                 fps=625  Lsize=  10,976KiB  ~  qual = 2.494614096232868
x264_qsv--global_qual_2,look_ahead_1                  fps=543  Lsize=  46,476KiB  ~  qual = 2.8877787816043936
x264_qsv--global_qual_2,look_ahead_1,preset_slow      fps=486  Lsize=  46,459KiB  ~  qual = 2.887756633831109
x264_qsv--global_qual_4,look_ahead_1,preset_slow      fps=540  Lsize=  46,459KiB  ~  qual = 2.887756633831109
x264_qsv--global_qual_8,look_ahead_1,preset_slow      fps=561  Lsize=  46,459KiB  ~  qual = 2.887756633831109
x264_qsv--global_qual_8,look_ahead_1_5,preset_slow    fps=565  Lsize=  46,459KiB  ~  qual = 2.887756633831109
x264_qsv--global_qual_8,look_ahead_1_5,preset_0       fps=561  Lsize=  46,476KiB  ~  qual = 2.8877787816043936
x264_qsv--global_qual_8,look_ahead_1_5,preset_3       fps=507  Lsize=  46,459KiB  ~  qual = 2.887756633831109
x264_qsv--global_qual_8,look_ahead_1_5,pre_3,scene_3  fps=532  Lsize=  46,459KiB  ~  qual = 2.887756633831109
x264_qsv--global_qual_8,look_ahead_1_5,pre_3,scene_4  fps=522  Lsize=  46,459KiB  ~  qual = 2.887756633831109
x264_qsv--global_qual_8,look_ahead_1_5,pre_3,scene_5  fps=483  Lsize=  46,459KiB  ~  qual = 2.887756633831109
x264_qsv--global_qual_8,look_ahead_1_5,scene_5        fps=517  Lsize=  46,476KiB  ~  qual = 2.8877787816043936
x264_qsv--global_qual_8,look_ahead_1_25,scene_5       fps=567  Lsize=  46,476KiB  ~  qual = 2.8877787816043936
x264_qsv--global_qual_8,look_ahead_1_100,scene_5      fps=553  Lsize=  46,476KiB  ~  qual = 2.8877787816043936
x264_qsv--global_qual_8,scene_5                       fps=510  Lsize=  46,476KiB  ~  qual = 2.8877787816043936
x264_qsv--global_qual_8,scene_4                       fps=575  Lsize=  46,476KiB  ~  qual = 2.8877787816043936
x264_qsv--global_qual_8,scene_3                       fps=482  Lsize=  46,476KiB  ~  qual = 2.8877787816043936
x264_qsv--global_qual_8                               fps=518  Lsize=  46,476KiB  ~  qual = 2.8877787816043936
x264_qsv--global_qual_12                              fps=494  Lsize=  41,808KiB  ~  qual = 2.880873323015015
x264_qsv--global_qual_13                              fps=560  Lsize=  37,351KiB  ~  qual = 2.8492832295158426
x264_qsv--global_qual_14                              fps=600  Lsize=  32,431KiB  ~  qual = 2.8303869962206862
x264_qsv--global_qual_15                              fps=611  Lsize=  28,208KiB  ~  qual = 2.779349466997285
x264_qsv--global_qual_16                              fps=583  Lsize=  24,624KiB  ~  qual = 2.729988182620431

hevc_qsv--global_qual_2                               fps=480  Lsize=  42,534KiB  ~  qual = 2.9129809435198224
hevc_qsv--global_qual_8                               fps=477  Lsize=  42,534KiB  ~  qual = 2.9129809435198224
hevc_qsv--global_qual_12                              fps=505  Lsize=  39,197KiB  ~  qual = 2.6911284571138467
hevc_qsv--global_qual_16                              fps=595  Lsize=  24,434KiB  ~  qual = 2.649475565903116

av1_qsv--defaults                                     fps=595  Lsize=   6,506KiB  ~  qual = 2.9379551312983736
av1_qsv--q_1                                          fps=574  Lsize=  42,180KiB  ~  qual = 2.974338209046417
av1_qsv--global_qual_1                                fps=584  Lsize=  22,306KiB  ~  qual = 2.9663573051808747
av1_qsv--global_qual_2                                fps=569  Lsize=  22,306KiB  ~  qual = 2.9663573051808747
av1_qsv--global_qual_4                                fps=580  Lsize=  22,306KiB  ~  qual = 2.9663573051808747
av1_qsv--global_qual_8                                fps=589  Lsize=  21,773KiB  ~  qual = 2.9441795810304714
av1_qsv--global_qual_12                               fps=577  Lsize=  21,611KiB  ~  qual = 2.9441795810304714
av1_qsv--global_qual_16                               fps=592  Lsize=  20,953KiB  ~  qual = 2.9520681402030133

av1_qsv--global_qual_1,frames_50                      fps=603  Lsize=  24,240KiB  # awesome scroll.
av1_qsv--global_qual_1,frames_100                     fps=559  Lsize=  22,947KiB  # good enough scroll using `-g 100 -keyint_min 1 -forced-idr 1 -look_ahead 0`

# deinterlacing tests start here...

av1_qsv--global_qual_1,frames_100,yadif               fps=555  Lsize=  21,971KiB  ~  qual = 2.9600490440685556   # default (same as mode=0) & gives 25fps (one frame per frame)
av1_qsv--global_qual_1,frames_100,yadif_1             fps=689  Lsize=  31,596KiB  ~  qual = 3.341668290434656    # gives 50fps (one frame per field)
av1_qsv--global_qual_1,frames_100,yadif_3             fps=639  Lsize=  31,756KiB  ~  qual = 3.3301580567942333   # gives 50fps (one frame per field)
av1_qsv--global_qual_1,frames_100,bwdif               fps=786  Lsize=  33,145KiB  ~  qual = 3.3301580567942333   # default (same as send_field=1) & gives 50fps (one frame per field)
av1_qsv--global_qual_1,frames_100,mcdeint,yadif=1     fps=108  Lsize=  24,547KiB  ~  qual = 3.326737218238156    # motion blurs after yadif. May look nicer, but isn't good for "archive".
av1_qsv--global_qual_1,frames_100,mcdeint,yadif=3     fps=110  Lsize=  24,683KiB  ~  qual = 3.3301580567942333
libx264--crf_1,frames_100,yadif_1                     fps=242  Lsize= 222,162KiB  ~  qual = 3.4018759851504567
libx264--crf_0,preset_slow,frames_100,yadif_1         fps=199  Lsize= 270,708KiB  ~  qual = 3.225124763304323    # dunno why the quality went down.
h264_qsv--global_qual_1,frames_100,yadif_1            fps=743  Lsize=  59,122KiB  ~  qual = 3.171612916196122
h264_qsv--global_qual_16,frames_100,yadif_1           fps=725  Lsize=  33,051KiB  ~  qual = 3.1517412696728675

Comments

  • +2

    While I don't care much about the exact subject of this post, I certainly appreciate a detailed tech post with readouts provided…. Keep up the good work!

  • yet an Nvidia 1080 video card (released 2016) still beats the Sparkle A310 (released 2022) … in terms of performance.

    Unless already have such an intel arc card in system … I certainly wouldn't go out buying it … just because.

    • +2

      Wildly different use cases. I would choose the ARC for a home media server over a 1080.

    • Like Ryanek mentions - GPU's can do more than just game. My CPU doesn't have iGPU, and I needed a GPU just to use PC, so this one ticked a lot of boxes.

      Even if I had a CPU with iGPU in my mobo, like the 5700G - they don't have AV1 encoding anyway. It took AMD until 8700G series for them to implement it, whilst Intel 14th gen CPU's didn't have it, and Nvidia took until RTX 40 series.

      And if/when I return to GPU-intensive gaming, this card may still prove useful as a "helper card" via Lossless Scaling and dual-GPU frame generation.

      This little card even has 6 raytracing cores!!!

  • a good side-by-side comparison can be found at …
    https://versus.com/en/intel-arc-a310-vs-nvidia-geforce-gtx-1…

  • -2

    Trump will put a tariff on it.

Login or Join to leave a comment