History

avcodec/mpegvideoencdsp: convert stride parameters from int to ptrdiff_t

Ramiro Polla committed 2 years ago

Commit 6aafe611 parent 7753a9d12 files · +53 −49Browse files

Unified · Split

12 files
  1. libavcodec/aarch64/mpegvideoencdsp_init.c +3 −3
  2. libavcodec/aarch64/mpegvideoencdsp_neon.S +3 −6
  3. libavcodec/arm/mpegvideoencdsp_init_arm.c +2 −2
  4. libavcodec/mips/h263dsp_mips.h +1 −1
  5. libavcodec/mips/mpegvideoencdsp_msa.c +1 −1
  6. libavcodec/mpegvideoencdsp.c +20 −11
  7. libavcodec/mpegvideoencdsp.h +5 −5
  8. libavcodec/ppc/mpegvideoencdsp.c +4 −4
  9. libavcodec/riscv/mpegvideoencdsp_init.c +2 −2
  10. libavcodec/x86/mpegvideoencdsp.asm +2 −4
  11. libavcodec/x86/mpegvideoencdsp_init.c +4 −4
  12. tests/checkasm/mpegvideoencdsp.c +6 −6
libavcodec/aarch64/mpegvideoencdsp_init.c+3−3
@@ -24,11 +24,11 @@ · 23 unmodified lines
24#include "libavcodec/mpegvideoencdsp.h"24#include "libavcodec/mpegvideoencdsp.h"
25#include "config.h"25#include "config.h"
26 26
27int ff_pix_sum16_neon(const uint8_t *pix, int line_size);27int ff_pix_sum16_neon(const uint8_t *pix, ptrdiff_t line_size);
28int ff_pix_norm1_neon(const uint8_t *pix, int line_size);28int ff_pix_norm1_neon(const uint8_t *pix, ptrdiff_t line_size);
29 29
30#if HAVE_DOTPROD30#if HAVE_DOTPROD
31int ff_pix_norm1_neon_dotprod(const uint8_t *pix, int line_size);31int ff_pix_norm1_neon_dotprod(const uint8_t *pix, ptrdiff_t line_size);
32#endif32#endif
33 33
34av_cold void ff_mpegvideoencdsp_init_aarch64(MpegvideoEncDSPContext *c,34av_cold void ff_mpegvideoencdsp_init_aarch64(MpegvideoEncDSPContext *c,
libavcodec/aarch64/mpegvideoencdsp_neon.S+3−6
@@ -22,9 +22,8 @@ · 21 unmodified lines
22 22
23function ff_pix_sum16_neon, export=123function ff_pix_sum16_neon, export=1
24// x0 const uint8_t *pix24// x0 const uint8_t *pix
25// x1 int line_size25// x1 ptrdiff_t line_size
26 26
27 sxtw x1, w1
28 add x2, x0, x127 add x2, x0, x1
29 lsl x1, x1, #128 lsl x1, x1, #1
30 movi v0.16b, #029 movi v0.16b, #0
@@ -46,9 +45,8 @@ endfunc · 15 unmodified lines
46 45
47function ff_pix_norm1_neon, export=146function ff_pix_norm1_neon, export=1
48// x0 const uint8_t *pix47// x0 const uint8_t *pix
49// x1 int line_size48// x1 ptrdiff_t line_size
50 49
51 sxtw x1, w1
52 movi v0.16b, #050 movi v0.16b, #0
53 mov w2, #1651 mov w2, #16
54 52
@@ -72,9 +70,8 @@ ENABLE_DOTPROD · 17 unmodified lines
72 70
73function ff_pix_norm1_neon_dotprod, export=171function ff_pix_norm1_neon_dotprod, export=1
74// x0 const uint8_t *pix72// x0 const uint8_t *pix
75// x1 int line_size73// x1 ptrdiff_t line_size
76 74
77 sxtw x1, w1
78 movi v0.16b, #075 movi v0.16b, #0
79 mov w2, #1676 mov w2, #16
80 77
libavcodec/arm/mpegvideoencdsp_init_arm.c+2−2
@@ -24,8 +24,8 @@ · 23 unmodified lines
24#include "libavcodec/avcodec.h"24#include "libavcodec/avcodec.h"
25#include "libavcodec/mpegvideoencdsp.h"25#include "libavcodec/mpegvideoencdsp.h"
26 26
27int ff_pix_norm1_armv6(const uint8_t *pix, int line_size);27int ff_pix_norm1_armv6(const uint8_t *pix, ptrdiff_t line_size);
28int ff_pix_sum_armv6(const uint8_t *pix, int line_size);28int ff_pix_sum_armv6(const uint8_t *pix, ptrdiff_t line_size);
29 29
30av_cold void ff_mpegvideoencdsp_init_arm(MpegvideoEncDSPContext *c,30av_cold void ff_mpegvideoencdsp_init_arm(MpegvideoEncDSPContext *c,
31 AVCodecContext *avctx)31 AVCodecContext *avctx)
libavcodec/mips/h263dsp_mips.h+1−1
@@ -31,6 +31,6 @@ void ff_dct_unquantize_h263_inter_msa(MpegEncContext *s, int16_t *block, · 30 unmodified lines
31 int32_t index, int32_t q_scale);31 int32_t index, int32_t q_scale);
32void ff_dct_unquantize_h263_intra_msa(MpegEncContext *s, int16_t *block,32void ff_dct_unquantize_h263_intra_msa(MpegEncContext *s, int16_t *block,
33 int32_t index, int32_t q_scale);33 int32_t index, int32_t q_scale);
34int ff_pix_sum_msa(const uint8_t *pix, int line_size);34int ff_pix_sum_msa(const uint8_t *pix, ptrdiff_t line_size);
35 35
36#endif // #ifndef AVCODEC_MIPS_H263DSP_MIPS_H36#endif // #ifndef AVCODEC_MIPS_H263DSP_MIPS_H
libavcodec/mips/mpegvideoencdsp_msa.c+1−1
@@ -56,7 +56,7 @@ static int32_t sum_u8src_16width_msa(const uint8_t *src, int32_t stride) · 55 unmodified lines
56 return sum;56 return sum;
57}57}
58 58
59int ff_pix_sum_msa(const uint8_t *pix, int line_size)59int ff_pix_sum_msa(const uint8_t *pix, ptrdiff_t line_size)
60{60{
61 return sum_u8src_16width_msa(pix, line_size);61 return sum_u8src_16width_msa(pix, line_size);
62}62}
libavcodec/mpegvideoencdsp.c+20−11
@@ -57,7 +57,7 @@ static void add_8x8basis_c(int16_t rem[64], const int16_t basis[64], int scale) · 56 unmodified lines
57 (BASIS_SHIFT - RECON_SHIFT);57 (BASIS_SHIFT - RECON_SHIFT);
58}58}
59 59
60static int pix_sum_c(const uint8_t *pix, int line_size)60static int pix_sum_c(const uint8_t *pix, ptrdiff_t line_size)
61{61{
62 int s = 0, i, j;62 int s = 0, i, j;
63 63
@@ -78,7 +78,7 @@ static int pix_sum_c(const uint8_t *pix, int line_size) · 14 unmodified lines
78 return s;78 return s;
79}79}
80 80
81static int pix_norm1_c(const uint8_t *pix, int line_size)81static int pix_norm1_c(const uint8_t *pix, ptrdiff_t line_size)
82{82{
83 int s = 0, i, j;83 int s = 0, i, j;
84 const uint32_t *sq = ff_square_tab + 256;84 const uint32_t *sq = ff_square_tab + 256;
@@ -114,7 +114,7 @@ static int pix_norm1_c(const uint8_t *pix, int line_size) · 29 unmodified lines
114 return s;114 return s;
115}115}
116 116
117static av_always_inline void draw_edges_lr(uint8_t *ptr, int wrap, int width, int height, int w)117static av_always_inline void draw_edges_lr(uint8_t *ptr, ptrdiff_t wrap, int width, int height, int w)
118{118{
119 for (int i = 0; i < height; i++) {119 for (int i = 0; i < height; i++) {
120 memset(ptr - w, ptr[0], w);120 memset(ptr - w, ptr[0], w);
@@ -125,7 +125,7 @@ static av_always_inline void draw_edges_lr(uint8_t *ptr, int wrap, int width, in · 4 unmodified lines
125 125
126/* draw the edges of width 'w' of an image of size width, height */126/* draw the edges of width 'w' of an image of size width, height */
127// FIXME: Check that this is OK for MPEG-4 interlaced.127// FIXME: Check that this is OK for MPEG-4 interlaced.
128static void draw_edges_8_c(uint8_t *buf, int wrap, int width, int height,128static void draw_edges_8_c(uint8_t *buf, ptrdiff_t wrap, int width, int height,
129 int w, int h, int sides)129 int w, int h, int sides)
130{130{
131 uint8_t *last_line;131 uint8_t *last_line;
@@ -154,9 +154,18 @@ static void draw_edges_8_c(uint8_t *buf, int wrap, int width, int height, · 22 unmodified lines
154 memcpy(last_line + (i + 1) * wrap, last_line, width + w + w);154 memcpy(last_line + (i + 1) * wrap, last_line, width + w + w);
155}155}
156 156
157/* This wrapper function only serves to convert the stride parameters
158 * from ptrdiff_t to int for av_image_copy_plane(). */
159static void copy_plane_wrapper(uint8_t *dst, ptrdiff_t dst_wrap,
160 const uint8_t *src, ptrdiff_t src_wrap,
161 int width, int height)
162{
163 av_image_copy_plane(dst, dst_wrap, src, src_wrap, width, height);
164}
165
157/* 2x2 -> 1x1 */166/* 2x2 -> 1x1 */
158static void shrink22(uint8_t *dst, int dst_wrap,167static void shrink22(uint8_t *dst, ptrdiff_t dst_wrap,
159 const uint8_t *src, int src_wrap,168 const uint8_t *src, ptrdiff_t src_wrap,
160 int width, int height)169 int width, int height)
161{170{
162 int w;171 int w;
@@ -188,8 +197,8 @@ static void shrink22(uint8_t *dst, int dst_wrap, · 25 unmodified lines
188}197}
189 198
190/* 4x4 -> 1x1 */199/* 4x4 -> 1x1 */
191static void shrink44(uint8_t *dst, int dst_wrap,200static void shrink44(uint8_t *dst, ptrdiff_t dst_wrap,
192 const uint8_t *src, int src_wrap,201 const uint8_t *src, ptrdiff_t src_wrap,
193 int width, int height)202 int width, int height)
194{203{
195 int w;204 int w;
@@ -219,8 +228,8 @@ static void shrink44(uint8_t *dst, int dst_wrap, · 23 unmodified lines
219}228}
220 229
221/* 8x8 -> 1x1 */230/* 8x8 -> 1x1 */
222static void shrink88(uint8_t *dst, int dst_wrap,231static void shrink88(uint8_t *dst, ptrdiff_t dst_wrap,
223 const uint8_t *src, int src_wrap,232 const uint8_t *src, ptrdiff_t src_wrap,
224 int width, int height)233 int width, int height)
225{234{
226 int w, i;235 int w, i;
@@ -247,7 +256,7 @@ av_cold void ff_mpegvideoencdsp_init(MpegvideoEncDSPContext *c, · 20 unmodified lines
247 c->try_8x8basis = try_8x8basis_c;256 c->try_8x8basis = try_8x8basis_c;
248 c->add_8x8basis = add_8x8basis_c;257 c->add_8x8basis = add_8x8basis_c;
249 258
250 c->shrink[0] = av_image_copy_plane;259 c->shrink[0] = copy_plane_wrapper;
251 c->shrink[1] = shrink22;260 c->shrink[1] = shrink22;
252 c->shrink[2] = shrink44;261 c->shrink[2] = shrink44;
253 c->shrink[3] = shrink88;262 c->shrink[3] = shrink88;
libavcodec/mpegvideoencdsp.h+5−5
@@ -34,13 +34,13 @@ typedef struct MpegvideoEncDSPContext { · 33 unmodified lines
34 const int16_t basis[64], int scale);34 const int16_t basis[64], int scale);
35 void (*add_8x8basis)(int16_t rem[64], const int16_t basis[64], int scale);35 void (*add_8x8basis)(int16_t rem[64], const int16_t basis[64], int scale);
36 36
37 int (*pix_sum)(const uint8_t *pix, int line_size);37 int (*pix_sum)(const uint8_t *pix, ptrdiff_t line_size);
38 int (*pix_norm1)(const uint8_t *pix, int line_size);38 int (*pix_norm1)(const uint8_t *pix, ptrdiff_t line_size);
39 39
40 void (*shrink[4])(uint8_t *dst, int dst_wrap, const uint8_t *src,40 void (*shrink[4])(uint8_t *dst, ptrdiff_t dst_wrap, const uint8_t *src,
41 int src_wrap, int width, int height);41 ptrdiff_t src_wrap, int width, int height);
42 42
43 void (*draw_edges)(uint8_t *buf, int wrap, int width, int height,43 void (*draw_edges)(uint8_t *buf, ptrdiff_t wrap, int width, int height,
44 int w, int h, int sides);44 int w, int h, int sides);
45} MpegvideoEncDSPContext;45} MpegvideoEncDSPContext;
46 46
libavcodec/ppc/mpegvideoencdsp.c+4−4
@@ -30,7 +30,7 @@ · 29 unmodified lines
30#if HAVE_ALTIVEC30#if HAVE_ALTIVEC
31 31
32#if HAVE_VSX32#if HAVE_VSX
33static int pix_norm1_altivec(const uint8_t *pix, int line_size)33static int pix_norm1_altivec(const uint8_t *pix, ptrdiff_t line_size)
34{34{
35 int i, s = 0;35 int i, s = 0;
36 const vector unsigned int zero =36 const vector unsigned int zero =
@@ -57,7 +57,7 @@ static int pix_norm1_altivec(const uint8_t *pix, int line_size) · 20 unmodified lines
57 return s;57 return s;
58}58}
59#else59#else
60static int pix_norm1_altivec(const uint8_t *pix, int line_size)60static int pix_norm1_altivec(const uint8_t *pix, ptrdiff_t line_size)
61{61{
62 int i, s = 0;62 int i, s = 0;
63 const vector unsigned int zero =63 const vector unsigned int zero =
@@ -87,7 +87,7 @@ static int pix_norm1_altivec(const uint8_t *pix, int line_size) · 23 unmodified lines
87#endif /* HAVE_VSX */87#endif /* HAVE_VSX */
88 88
89#if HAVE_VSX89#if HAVE_VSX
90static int pix_sum_altivec(const uint8_t *pix, int line_size)90static int pix_sum_altivec(const uint8_t *pix, ptrdiff_t line_size)
91{91{
92 int i, s;92 int i, s;
93 const vector unsigned int zero =93 const vector unsigned int zero =
@@ -115,7 +115,7 @@ static int pix_sum_altivec(const uint8_t *pix, int line_size) · 21 unmodified lines
115 return s;115 return s;
116}116}
117#else117#else
118static int pix_sum_altivec(const uint8_t *pix, int line_size)118static int pix_sum_altivec(const uint8_t *pix, ptrdiff_t line_size)
119{119{
120 int i, s;120 int i, s;
121 const vector unsigned int zero =121 const vector unsigned int zero =
libavcodec/riscv/mpegvideoencdsp_init.c+2−2
@@ -26,8 +26,8 @@ · 25 unmodified lines
26int ff_try_8x8basis_rvv(const int16_t rem[64], const int16_t weight[64],26int ff_try_8x8basis_rvv(const int16_t rem[64], const int16_t weight[64],
27 const int16_t basis[16], int scale);27 const int16_t basis[16], int scale);
28void ff_add_8x8basis_rvv(int16_t rem[64], const int16_t basis[16], int scale);28void ff_add_8x8basis_rvv(int16_t rem[64], const int16_t basis[16], int scale);
29int ff_pix_sum_rvv(const uint8_t *pix, int line_size);29int ff_pix_sum_rvv(const uint8_t *pix, ptrdiff_t line_size);
30int ff_pix_norm1_rvv(const uint8_t *pix, int line_size);30int ff_pix_norm1_rvv(const uint8_t *pix, ptrdiff_t line_size);
31 31
32av_cold void ff_mpegvideoencdsp_init_riscv(MpegvideoEncDSPContext *c,32av_cold void ff_mpegvideoencdsp_init_riscv(MpegvideoEncDSPContext *c,
33 AVCodecContext *avctx)33 AVCodecContext *avctx)
libavcodec/x86/mpegvideoencdsp.asm+2−4
@@ -24,12 +24,11 @@ · 23 unmodified lines
24%include "libavutil/x86/x86util.asm"24%include "libavutil/x86/x86util.asm"
25 25
26SECTION .text26SECTION .text
27; int ff_pix_sum16(const uint8_t *pix, int line_size)27; int ff_pix_sum16(const uint8_t *pix, ptrdiff_t line_size)
28; %1 = number of loops28; %1 = number of loops
29; %2 = number of GPRs used29; %2 = number of GPRs used
30%macro PIX_SUM16 330%macro PIX_SUM16 3
31cglobal pix_sum16, 2, %2, 631cglobal pix_sum16, 2, %2, 6
32 movsxdifnidn r1, r1d
33 mov r2, %132 mov r2, %1
34 lea r3, [r1*3]33 lea r3, [r1*3]
35%if notcpuflag(xop)34%if notcpuflag(xop)
@@ -72,12 +71,11 @@ INIT_XMM xop · 36 unmodified lines
72PIX_SUM16 4, 4, 471PIX_SUM16 4, 4, 4
73%endif72%endif
74 73
75; int ff_pix_norm1(const uint8_t *pix, int line_size)74; int ff_pix_norm1(const uint8_t *pix, ptrdiff_t line_size)
76; %1 = number of xmm registers used75; %1 = number of xmm registers used
77; %2 = number of loops76; %2 = number of loops
78%macro PIX_NORM1 277%macro PIX_NORM1 2
79cglobal pix_norm1, 2, 3, %178cglobal pix_norm1, 2, 3, %1
80 movsxdifnidn r1, r1d
81 mov r2, %279 mov r2, %2
82 pxor m0, m080 pxor m0, m0
83 pxor m5, m581 pxor m5, m5
libavcodec/x86/mpegvideoencdsp_init.c+4−4
@@ -23,9 +23,9 @@ · 22 unmodified lines
23#include "libavcodec/avcodec.h"23#include "libavcodec/avcodec.h"
24#include "libavcodec/mpegvideoencdsp.h"24#include "libavcodec/mpegvideoencdsp.h"
25 25
26int ff_pix_sum16_sse2(const uint8_t *pix, int line_size);26int ff_pix_sum16_sse2(const uint8_t *pix, ptrdiff_t line_size);
27int ff_pix_sum16_xop(const uint8_t *pix, int line_size);27int ff_pix_sum16_xop(const uint8_t *pix, ptrdiff_t line_size);
28int ff_pix_norm1_sse2(const uint8_t *pix, int line_size);28int ff_pix_norm1_sse2(const uint8_t *pix, ptrdiff_t line_size);
29 29
30#if HAVE_INLINE_ASM30#if HAVE_INLINE_ASM
31 31
@@ -96,7 +96,7 @@ int ff_pix_norm1_sse2(const uint8_t *pix, int line_size); · 64 unmodified lines
96#endif /* HAVE_SSSE3_INLINE */96#endif /* HAVE_SSSE3_INLINE */
97 97
98/* Draw the edges of width 'w' of an image of size width, height */98/* Draw the edges of width 'w' of an image of size width, height */
99static void draw_edges_mmx(uint8_t *buf, int wrap, int width, int height,99static void draw_edges_mmx(uint8_t *buf, ptrdiff_t wrap, int width, int height,
100 int w, int h, int sides)100 int w, int h, int sides)
101{101{
102 uint8_t *ptr, *last_line;102 uint8_t *ptr, *last_line;
tests/checkasm/mpegvideoencdsp.c+6−6
@@ -34,7 +34,7 @@ static void check_pix_sum(MpegvideoEncDSPContext *c) · 33 unmodified lines
34{34{
35 LOCAL_ALIGNED_16(uint8_t, src, [16 * 16]);35 LOCAL_ALIGNED_16(uint8_t, src, [16 * 16]);
36 36
37 declare_func(int, const uint8_t *pix, int line_size);37 declare_func(int, const uint8_t *pix, ptrdiff_t line_size);
38 38
39 randomize_buffers(src, 16 * 16);39 randomize_buffers(src, 16 * 16);
40 40
@@ -43,7 +43,7 @@ static void check_pix_sum(MpegvideoEncDSPContext *c) · 2 unmodified lines
43 if (check_func(c->pix_sum, "pix_sum%s", negstride_str)) {43 if (check_func(c->pix_sum, "pix_sum%s", negstride_str)) {
44 int sum0, sum1;44 int sum0, sum1;
45 const uint8_t *pix = src + (n ? (15 * 16) : 0);45 const uint8_t *pix = src + (n ? (15 * 16) : 0);
46 int line_size = 16 * (n ? -1 : 1);46 ptrdiff_t line_size = 16 * (n ? -1 : 1);
47 sum0 = call_ref(pix, line_size);47 sum0 = call_ref(pix, line_size);
48 sum1 = call_new(pix, line_size);48 sum1 = call_new(pix, line_size);
49 if (sum0 != sum1)49 if (sum0 != sum1)
@@ -57,7 +57,7 @@ static void check_pix_norm1(MpegvideoEncDSPContext *c) · 7 unmodified lines
57{57{
58 LOCAL_ALIGNED_16(uint8_t, src, [16 * 16]);58 LOCAL_ALIGNED_16(uint8_t, src, [16 * 16]);
59 59
60 declare_func(int, const uint8_t *pix, int line_size);60 declare_func(int, const uint8_t *pix, ptrdiff_t line_size);
61 61
62 randomize_buffers(src, 16 * 16);62 randomize_buffers(src, 16 * 16);
63 63
@@ -66,7 +66,7 @@ static void check_pix_norm1(MpegvideoEncDSPContext *c) · 2 unmodified lines
66 if (check_func(c->pix_norm1, "pix_norm1%s", negstride_str)) {66 if (check_func(c->pix_norm1, "pix_norm1%s", negstride_str)) {
67 int sum0, sum1;67 int sum0, sum1;
68 const uint8_t *pix = src + (n ? (15 * 16) : 0);68 const uint8_t *pix = src + (n ? (15 * 16) : 0);
69 int line_size = 16 * (n ? -1 : 1);69 ptrdiff_t line_size = 16 * (n ? -1 : 1);
70 sum0 = call_ref(pix, line_size);70 sum0 = call_ref(pix, line_size);
71 sum1 = call_new(pix, line_size);71 sum1 = call_new(pix, line_size);
72 if (sum0 != sum1)72 if (sum0 != sum1)
@@ -88,7 +88,7 @@ static void check_draw_edges(MpegvideoEncDSPContext *c) · 15 unmodified lines
88 LOCAL_ALIGNED_16(uint8_t, buf0, [BUFSIZE]);88 LOCAL_ALIGNED_16(uint8_t, buf0, [BUFSIZE]);
89 LOCAL_ALIGNED_16(uint8_t, buf1, [BUFSIZE]);89 LOCAL_ALIGNED_16(uint8_t, buf1, [BUFSIZE]);
90 90
91 declare_func_emms(AV_CPU_FLAG_MMX, void, uint8_t *buf, int wrap, int width, int height,91 declare_func_emms(AV_CPU_FLAG_MMX, void, uint8_t *buf, ptrdiff_t wrap, int width, int height,
92 int w, int h, int sides);92 int w, int h, int sides);
93 93
94 for (int isi = 0; isi < FF_ARRAY_ELEMS(input_sizes); isi++) {94 for (int isi = 0; isi < FF_ARRAY_ELEMS(input_sizes); isi++) {
@@ -96,7 +96,7 @@ static void check_draw_edges(MpegvideoEncDSPContext *c) · 1 unmodified line
96 int negstride = input_size < 0;96 int negstride = input_size < 0;
97 const char *negstride_str = negstride ? "_negstride" : "";97 const char *negstride_str = negstride ? "_negstride" : "";
98 int width = FFABS(input_size);98 int width = FFABS(input_size);
99 int linesize = EDGE_WIDTH + width + EDGE_WIDTH;99 ptrdiff_t linesize = EDGE_WIDTH + width + EDGE_WIDTH;
100 /* calculate height based on specified width to use the entire buffer. */100 /* calculate height based on specified width to use the entire buffer. */
101 int height = (BUFSIZE / linesize) - (2 * EDGE_WIDTH);101 int height = (BUFSIZE / linesize) - (2 * EDGE_WIDTH);
102 uint8_t *dst0 = buf0 + EDGE_WIDTH * linesize + EDGE_WIDTH;102 uint8_t *dst0 = buf0 + EDGE_WIDTH * linesize + EDGE_WIDTH;

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t